我有一个这样的数据框:
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
。我想总结一下这些行(超过x1
和x2
)以获取具有唯一ids
的新数据框:
df_new
id x1 x2
1 1 5
2 1 1
3 2 1
一个重要的细节是列x1
,x2
,...的实际数量很大,因此我无法应用需要手动输入列名的函数。
答案 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