总结具有重复列熊猫的多行

Shu*_*m R 6 python pandas

考虑这个数据框

df = pd.DataFrame({'a': [1,2,1,3,4,2], 'c':['dd','ee','dd','as','ae','ee'], 'count':[5,9,1,6,8,3]})

   a   c  count
0  1  dd      5
1  2  ee      9
2  1  dd      1
3  3  as      6
4  4  ae      8
5  2  ee      3
Run Code Online (Sandbox Code Playgroud)

如您所见,“a”列1 and 2中的重复项重复多次。

我想像在我们做 groupby 的 sql 中一样对 Pandas 中的此类进行求和。

我的最终 df 应该是这样的

   a   c  count
0  1  dd      6
1  2  ee      12
2  3  as      6
3  4  ae      8
Run Code Online (Sandbox Code Playgroud)

我尝试使用 df = df.groupby('a')但它正在返回我

<pandas.core.groupby.DataFrameGroupBy object
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 9

您需要groupby按列ac聚合sum

df = df.groupby(['a','c'], as_index=False)['count'].sum()
print (df)
   a   c  count
0  1  dd      6
1  2  ee     12
2  3  as      6
3  4  ae      8
Run Code Online (Sandbox Code Playgroud)

但是,如果只需要 groupby 列a,则aggregate需要输出中需要的所有列 - 例如,列c是由firstcount由聚合的sum

df = df.groupby('a').agg({'c':'first', 'count':'sum'}).reset_index()
print (df)
   a   c  count
0  1  dd      6
1  2  ee     12
2  3  as      6
3  4  ae      8
Run Code Online (Sandbox Code Playgroud)


mr.*_*rre 6

你几乎已经拥有了

df.groupby(['a', 'c']).sum().reset_index()
Run Code Online (Sandbox Code Playgroud)

产量

   a   c  count
0  1  dd      6
1  2  ee     12
2  3  as      6
3  4  ae      8
Run Code Online (Sandbox Code Playgroud)