如何在熊猫中进行分组和转换

时间:2017-01-26 10:55:35

标签: python pandas dataframe

现在我有以下数据框

out of a:  [[4,1,8],[5,2,9],[6,3,10]]
out of a1: [[1,8],[2,9],[3,10]]
out of a2: [[4,1,8,11],[5,2,9,21],[6,3,10,31]]

我想通过df.A进行分组,并在df.B中总结

但是,我想将C转换为每个组元素中的第一个。

所以我想在下面得到结果。

A B C
1 1 1 
1 2 1
1 3 2
2 4 2
2 5 2
2 6 3

我如何保持df.C并转换每组的第一个元素?

我试过df.groupby(A)[B] .sum()但是我不知道下一步......

1 个答案:

答案 0 :(得分:3)

您可以使用agg并传递func的dict来执行感兴趣的列:

In [115]:
df.groupby('A').agg({'B':'sum','C':'first'}).reset_index()

Out[115]:
   A  C   B
0  1  1   6
1  2  2  15

dict具有要在每个col上执行的col名称和func,在这里我们可以传递sumfirst的func的字符串名称。

要重新排序cols,您可以使用花式索引:

In [116]:
df.groupby('A').agg({'B':'sum','C':'first'}).reset_index().ix[:,df.columns]

Out[116]:
   A   B  C
0  1   6  1
1  2  15  2