调整大 pandas 数据帧的一部分 [英] Transposing part of a pandas dataframe

查看:99
本文介绍了调整大 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆