Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按分组并仅对一列求和_Python_Pandas - Fatal编程技术网

Python 按分组并仅对一列求和

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列中。类似于这

因此,我有一个数据帧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     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”