熊猫:如何结合nunique和sum

时间:2019-12-03 13:09:34

标签: python pandas dataframe pandas-groupby

我正在使用与此类似的数据框:

id year losses revenue expenses 2 2014 1500 5000 400 1 2013 1000 2000 5600 1 2018 500 10000 2100 3 2019 1500 15000 500 2 2011 100 2100 500 4 2010 1200 400 2000 4 2014 1000 22000 1000

我想按id列中的唯一值进行排序,然后找到losses revenueexpenses的总和。

id losses revenue expenses 2 1600 7100 900 1 1500 12000 7700 3 1500 15000 500 4 2200 22400 3000

我尝试使用

df.groupby('id')['losses', 'revenue', 'expenses'].sum().reset_index()

,但是返回的列比应有的多。我试图利用nunique()来获取id的唯一值,然后从中获取剩余列的总和,但是我正在努力寻找一种可行的方法

1 个答案:

答案 0 :(得分:1)

将参数sort=Falseas_index=False添加到DataFrame.groupby

df = df.groupby('id', sort=False, as_index=False)['losses', 'revenue', 'expenses'].sum()
print (df)
   id  losses  revenue  expenses
0   2    1600     7100       900
1   1    1500    12000      7700
2   3    1500    15000       500
3   4    2200    22400      3000