调整大 pandas 数据帧的一部分 [英] Transposing part of a pandas dataframe
本文介绍了调整大 pandas 数据帧的一部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据框:
>>> df
输出[15]:
组类型数量
0 group_A购买100 123
1 group_A视图0 111
2 group_B视图0 222
3 group_A view 0 222
我想转载数据,以便我最终得到: p>
type group_A group_B
0 amount buy 100 0
1 number buy 0 123
2 number view 333 222
如何实现?
解决方案
使用
df = pd.DataFrame([['group_A' '买'',100,123],['group_A','view',0,111],['group_B','view',0,222],['group_A','view',0,222]],columns = ['group' ,'type','amount','number'])
首先总结指标和方向:
>>> df = df.groupby(['type','group'])。sum().transpose()。stack(0).reset_index()
>>> df
group level_0 type group_A group_B
0 amount buy 100 NaN
1 amount view 0 0
2 number buy 123 NaN
3 number view 333 222
删除全部为零的行:
df = df [〜((df ['group_A'] == 0)|(df ['group_B'] == 0))]
pre>
Fillna's:
>>> df.fillna(0)
group level_0 type group_A group_B
0 amount buy 100 0
2 number buy 123 0
3 number view 333 222
在这里有几个猜测,但应该给你一个开始。
I have the following dataframe:
>>> df Out[15]: group type amount number 0 group_A buy 100 123 1 group_A view 0 111 2 group_B view 0 222 3 group_A view 0 222
I'd like to pivot the data so that I end up with:
type group_A group_B 0 amount buy 100 0 1 number buy 0 123 2 number view 333 222
How do I accomplish this?
解决方案Using:
df=pd.DataFrame([['group_A','buy',100,123],['group_A','view',0,111],['group_B','view',0,222],['group_A','view',0,222]],columns=['group','type','amount','number'])
First sum the indices and orientate:
>>> df = df.groupby(['type','group']).sum().transpose().stack(0).reset_index() >>> df group level_0 type group_A group_B 0 amount buy 100 NaN 1 amount view 0 0 2 number buy 123 NaN 3 number view 333 222
Drop rows that are all zero:
df = df[~((df['group_A']==0) | (df['group_B']==0))]
Fillna's:
>>> df.fillna(0) group level_0 type group_A group_B 0 amount buy 100 0 2 number buy 123 0 3 number view 333 222
Somewhat guessing in a few place here, but it should give you a start.
这篇关于调整大 pandas 数据帧的一部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文