如何使用Python对特定列进行求和?
我不能按每一组/每一列求和。其想法是在该数据集上创建一个新列,其总和为“store”: 我正在尝试应用此代码:如何使用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
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])