我有一个Pandas数据框,以及一些有关某些人的数字数据。 我需要做的是找到在数据框中占比不止一次的人员,并用一行代替一个人的所有行,其中数值是某些列中各行之前的数值之和,以及其他最小值。 我知道如何使用groupby()和sum()进行总和,但不知道如何对不同的列做不同的事情
示例:
Names Column1 Column2 Column3
John 1 2 2016
Bob 2 3 2011
Pier 1 1 2003
John 3 3 2005
Bob 1 0 2018
必须成为:
Names Column1 Column2 Column3
John 4 5 2005
Bob 3 3 2011
Pier 1 1 2003
我该怎么办?
答案 0 :(得分:2)
使用groupby
+ agg
并为每个列定义特定的聚合函数,例如dict
:
df.groupby('Names').agg({'Column1':'sum', 'Column2':'sum','Column3':'min'})
Column1 Column2 Column3
Names
Bob 3 3 2011
John 3 3 2005
Jonh 1 2 2016
Pier 1 1 2003