python - 汇总 DataFrame 中的非唯一行

标签 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,...很大,因此我无法应用需要手动输入列名称的函数.

最佳答案

正如所讨论的,您可以使用 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

关于python - 汇总 DataFrame 中的非唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033218/

相关文章:

python - pandas df 可以有可供选择的列数吗?

python - 在 Pandas 数据框 python 中寻找值(value)

python - 根据值数组的条件在 pandas 中分配值

python - 是否可以为方法定义 sphinx 文档提供单独的新行

python - 如何在 Python 中使用 protobuf 映射?

python - 在 django 中迭代查询集时创建新表

c# - IronPython.Runtime.UnboundNameException : name 'str' is not defined

python - Pandas 离开并更新现有列

python - 用来自自身的样本填充列中的 NA

pandas - 将 pandas 数据框与间隔数据(从上到下)结合起来,并以尽可能最小的间隔创建新的 df