首页 > 解决方案 > 根据特定列值组合 Dataframe 上的行并添加其他值

问题描述

所以我有一个数据框,我希望将两个相同的列值组合在一起,但让所有其他列值保持原样。

例如:

c1            c2

shark         20
pizza         25
asteroid      10
shark         90
asteroid      30

我希望它将c1列中的所有内容与仅值组合shark并添加值,c2因此我得到以下信息:

c1            c2

shark         110
pizza         25
asteroid      10
asteroid      30

groupby结合了我不想要的一切。

我猜使用df.loc会带我到某个地方,但我不确定如何将它应用回数据框,所以它会改变它。

标签: pythonpython-3.xpandasdataframe

解决方案


您可以使用Groupby.sumand执行此操作df.append

从 df where c1 == 'shark'、 groupby 和 sum中选择行c2。然后append剩余的行c1 != 'shark'到较早的数据帧。

In [2009]: x = df[df.c1 == 'shark'].groupby('c1', as_index=False).sum()
In [2012]: res = x.append(df[df.c1 != 'shark'])

In [2013]: res
Out[2013]: 
         c1   c2
0     shark  110
1     pizza   25
2  asteroid   10
4  asteroid   30

推荐阅读