Python 为什么df.cumsum()给出ValueError:传递的项目数错误,位置意味着1

Python 为什么df.cumsum()给出ValueError:传递的项目数错误,位置意味着1,python,pandas,cumsum,Python,Pandas,Cumsum,我想根据每组中每个金额的总和创建一个名为total_amount的新列。我希望最终的数据集看起来像下面的数据集 公司|金额|总金额 公司1 | 10000 | 10000 公司1 | 20000 | 30000 公司1 | 30000 | 60000 公司2 | 10000 | 10000 公司2 | 20000 | 30000 公司3 | 10000 | 10000 公司4 | 10000 | 10000 公司4 | 20000 | 20000 公司5 | 10000 | 10000 公司5

我想根据每组中每个金额的总和创建一个名为total_amount的新列。我希望最终的数据集看起来像下面的数据集

公司|金额|总金额

公司1 | 10000 | 10000

公司1 | 20000 | 30000

公司1 | 30000 | 60000

公司2 | 10000 | 10000

公司2 | 20000 | 30000

公司3 | 10000 | 10000

公司4 | 10000 | 10000

公司4 | 20000 | 20000

公司5 | 10000 | 10000

公司5 | 20000 | 30000

公司5 | 30000 | 60000

公司5 | 40000 | 100000


我运行了这个代码

 df['total_amount'] = df.groupby('company').cumsum()

它工作得很简单,但当我试图改变它的位置以使代码更具可读性时,它开始给我KeyError“total_amount”和上面列出的值错误。我做错了什么?

它表示
cumsum
返回超过1列。换句话说,
df.groupby('company').cumsum()正在调用
DataFrameGroupby
对象上的
cumsum
,因此它返回一个数据帧。如果返回的数据帧只有1列,则分配仍然有效。但是,如果返回的dataframe有2列或更多列,它将失败,因为上面出现了错误。我怀疑您的第一次运行返回了1列数据帧,所以它工作了。但是,第一次运行创建了一个附加列。在下一次运行时,它返回n列数据帧,因此分配失败

请尝试以下操作以修复错误:

df['total_amount'] = df.groupby('company')['amount'].cumsum()

它表示
cumsum
返回超过1列。换句话说,
df.groupby('company').cumsum()正在调用
DataFrameGroupby
对象上的
cumsum
,因此它返回一个数据帧。如果返回的数据帧只有1列,则分配仍然有效。但是,如果返回的dataframe有2列或更多列,它将失败,因为上面出现了错误。我怀疑您的第一次运行返回了1列数据帧,所以它工作了。但是,第一次运行创建了一个附加列。在下一次运行时,它返回n列数据帧,因此分配失败

请尝试以下操作以修复错误:

df['total_amount'] = df.groupby('company')['amount'].cumsum()

你是对的,我不知道我可以用括号指定另一列。谢谢你的帮助!你是对的,我不知道我可以用括号指定另一列。谢谢你的帮助!