现在我有以下数据框
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()但是我不知道下一步......
答案 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,在这里我们可以传递sum
和first
的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