Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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_Dataframe_Group By_Sum - Fatal编程技术网

如何使用Python对特定列进行求和?

如何使用Python对特定列进行求和?,python,pandas,dataframe,group-by,sum,Python,Pandas,Dataframe,Group By,Sum,我不能按每一组/每一列求和。其想法是在该数据集上创建一个新列,其总和为“store”: 我正在尝试应用此代码: copiedDataWHSE['sumWHSE'] = copiedDataWHSE.groupby(['ForecastSUM']).agg({'ForecastSUM': "sum"}) 我得到的结果是: PNO store ForecastSUM sumWHSE 17 20054706 WITZ 0.0 NaN 8 8007536 WI

我不能按每一组/每一列求和。其想法是在该数据集上创建一个新列,其总和为“store”:

我正在尝试应用此代码:

copiedDataWHSE['sumWHSE'] = copiedDataWHSE.groupby(['ForecastSUM']).agg({'ForecastSUM': "sum"})
我得到的结果是:

PNO store   ForecastSUM sumWHSE
17  20054706    WITZ    0.0 NaN
8   8007536 WITZ    0.0 NaN
2   8007205 WITZ    0.0 4.0
12  8601965 WITZ    0.0 NaN
5   8007239 WITZ    0.0 NaN
14  20054706    ROT 1.0 NaN
1   8007205 ROT 7.0 3.0
9   8601965 ROT 2.0 NaN
6   8007536 ROT 3.0 12.0
3   8007239 ROT 2.0 6.0
15  20054706    MAR 1.0 NaN
7   8007536 MAEG    6.0 7.0
10  8601965 MAEG    4.0 NaN
4   8007239 MAEG    3.0 4.0
0   8007205 MAEG    6.0 0.0
13  20054706    BUD 1.0 NaN
11  8601965 AYC 0.0 NaN
16  20054706    AYC 0.0 NaN

这是错误的,因为我想举个例子,一旦商店腐烂,sumWHSE列应该收到19。

正如@sammywemmy提到的,你需要在
商店
上分组,而不是在
ForecastSUM
上分组:

store_groupby = df.groupby(['store']).agg({'ForecastSUM': "sum"})
但是,由于它是长度为
6
的groupby,因此不能将其作为新列分配回数据帧

我要做的是将groupby转换为一个字典,然后使用lambda函数将其转换为一个新列

store_groupby_dict = store_groupby.to_dict()

df = df.assign(store_total = lambda x: store_groupby_dict[x.store])
使用同样的方法可以使其更具可读性:

df['store_total'] = df.store.apply(lambda x: store_groupby_dict[x])

如果你要聚合它,你为什么要对预测值进行分组?如果这个答案解决了你的问题,请考虑通过点击左边的绿色复选标记来批准它。欢迎来到SO!一旦我应用df['store\u total']=df.store.apply(lambda x:store\u groupby\u dict[x]),就会发生以下错误:在()1--->2 copiedDataWHSE['store\u total']=copiedDataWHSE['store'].apply(lambda x:store\u groupby\u dict[x])中的KeyError回溯(最近一次调用)C:\ProgramData\Anaconda3\lib\site packages\pandas\core\series.py in apply(self,func,convert\dtype,args,**kwds)3192 else:3193 values=self.astype(object).values->3194 mapped=lib.map\u infere(values,f,convert=convert\u dtype)3195 3196如果len(mapped)和isinstance(mapped[0],系列):pandas/_libs/src\inference.pyx在pandas中。_libs.lib.map\u inference()在(x)1--->2 copiedDataWHSE['store\u total']=copiedDataWHSE['store'].apply(lambda x:store\u groupby\u dict[x])键错误:“WITZ”未将WITZ识别为键。我该怎么办?
df['store_total'] = df.store.apply(lambda x: store_groupby_dict[x])