2017-08-07 207 views
0

下面是一个例子:如何将两行合并为一个基于多列的行?

Column A Column B Column C 
    A_1  B_1  0 
    A_1  B_1  1 
    A_1  B_2  2 
    A_1  B_2  3 

我想获得:

Column A Column B Column C 
    A_1  B_1  1 
    A_1  B_2  5 

我试图做df.groupby(["Column A", "Column B"])["Column C"].sum()但我与其中指数是根据(Column A, Column B)与列Column C Series对象返回数字是连接而不是总和。

回答

2

当致电df.groupby时,请指定as_index=False,以便列不会转换为Index。 groupby后可以使用df.agg

In [990]: df.groupby(["Column A", "Column B"], as_index=False).agg('sum') 
Out[990]: 
    Column A Column B Column C 
0  A_1  B_1   1 
1  A_1  B_2   5 
+0

谢谢!当我读取我的数据文件时,我犯了一个错误。列C应该首先更改为数字类型。这就是为什么我已经获得字符串连接而不是你的代码和我的总和。我意识到使用'.sum()'也给出了完全相同的答案。 –

+0

@StanleyGan如果你喜欢MultiIndex,你的解决方案是好的。否则,我推荐这个。干杯。 –