Python 按分组并仅对一列求和
因此,我有一个数据帧df1,看起来如下所示:Python 按分组并仅对一列求和,python,pandas,Python,Pandas,因此,我有一个数据帧df1,看起来如下所示: A B C 1 foo 12 California 2 foo 22 California 3 bar 8 Rhode Island 4 bar 32 Rhode Island 5 baz 15 Ohio 6 baz 26 Ohio 我想按A列分组,然后对B列求和,同时将值保留在C列中。类似于这
A B C
1 foo 12 California
2 foo 22 California
3 bar 8 Rhode Island
4 bar 32 Rhode Island
5 baz 15 Ohio
6 baz 26 Ohio
我想按A列分组,然后对B列求和,同时将值保留在C列中。类似于这样:
A B C
1 foo 34 California
2 bar 40 Rhode Island
3 baz 41 Ohio
问题是,当我说df.groupby('A').sum()列C被删除
B
A
bar 40
baz 41
foo 34
当我进行分组和求和时,如何避免这一问题并保留C列?唯一的方法是将C包含在groupby中(groupby函数可以接受列表) 尝试一下:
df.groupby(['A','C'])['B'].sum()
另一件需要注意的事情是,如果需要在聚合后使用df,还可以使用as_index=False选项返回数据帧对象。当我第一次与熊猫合作时,这一次给我带来了麻烦。例如:
df.groupby(['A','C'], as_index=False)['B'].sum()
如果您不关心C列中的内容,只需要
nth
值,您可以这样做:
df.groupby('A').agg({'B' : 'sum',
'C' : lambda x: x.iloc[n]})
你能按A和C分组吗?如果A的每一个值都没有将1对1映射为C,那么你所要求的是不可能的。如果他们真的将1映射到1,那么
groupby
bothYea应该不会有问题。我已经尝试了多个值,但是没有使用正确的格式,这让我觉得我不能使用多个值。谢谢是的,我没有意识到我需要[],这让我觉得你无法将多个列分组。谢谢很乐意帮忙!如果你能接受答案(绿色支票),我将不胜感激。祝你好运!也许我们应该添加一条注释,如果我们想要导出它并保留标题,我们需要在最后添加这一行:df.to_csv(“output.csv”,header=True,index=True)
在这一行上获取错误:“c”:lambda x:x.iloc[n]}。错误为:name错误:未定义名称“n”