在Pandas Dataframe中对列进行分组

时间:2017-02-22 15:13:26

标签: python pandas dataframe

如果有人能帮我解决我遇到的大熊猫数据帧问题,我将不胜感激。

我正在尝试按列对pandas数据框进行分组,但我不确定如何继续。我有一个包含重复列名称的数据框(A' s和B' s),并希望对这些列进行分组以返回A和B的最大值

重复列数据框

index      | A | A | A | B | B |
--------------------------------
2015-01-01 |   | 1 | 7 | 1 |   |
--------------------------------
2015-01-02 | 3 |   |   |   | 5 |

处理后的数据框

index      | A | B |
--------------------
2015-01-01 | 7 | 1 |
---------------------
2015-01-02 | 3 | 5 |

unique_cols = [A,B]   
df.groupby(by = cols, axis = 1).max()

这不起作用,因为我收到关于Grouper的错误消息而不是1维。我也试过转换数据帧并按行分组。但是我收到一条IndexError消息(索引0超出了0号轴<0>的<0>)

问题:

如何将具有重复列的数据框分组以从组中返回最大值?

1 个答案:

答案 0 :(得分:4)

我认为您需要按子集首先过滤列,然后groupbylevel=0 axis=1列出所有列值:

cols = ['A','B']   
df = df[cols].groupby(level = 0, axis = 1).max()
print (df)
              A    B
index               
2015-01-01  7.0  1.0
2015-01-02  3.0  5.0

如有必要,最后转为int

df = df[cols].groupby(level = 0, axis = 1).max().astype(int)
print (df)
            A  B
index           
2015-01-01  7  1
2015-01-02  3  5