总结DataFrame中的非唯一行

时间:2016-01-27 09:20:16

标签: python pandas dataframe

我有一个这样的数据框:

id = [1,1,2,3]
x1 = [0,1,1,2]
x2 = [2,3,1,1]

df = pd.DataFrame({'id':id, 'x1':x1, 'x2':x2})

df
id  x1  x2
1   0   2
1   1   3
2   1   1
3   2   1

某些行具有相同的id。我想总结一下这些行(超过x1x2)以获取具有唯一ids的新数据框:

df_new
id  x1  x2
1   1   5
2   1   1
3   2   1

一个重要的细节是列x1x2,...的实际数量很大,因此我无法应用需要手动输入列名的函数。

2 个答案:

答案 0 :(得分:2)

如上所述,您可以使用pandas groupby函数根据id值求和:

df.groupby(df.id).sum()
# or
df.groupby('id').sum()

如果您不想让id成为索引,那么您可以:

df.groupby('id').sum().reset_index()
# or
df.groupby('id', as_index=False).sum()   # @John_Gait

答案 1 :(得分:0)

使用pivot_table

In [31]: df.pivot_table(index='id', aggfunc=sum)
Out[31]:
    x1  x2
id
1    1   5
2    1   1
3    2   1