我知道Sumproduct上存在一些关于堆栈溢出的问题,但解决方案对我不起作用。我对Python熊猫也很陌生
对于每一行,我只想在列['2020']的情况下对某些列进行求和运算=0 我使用了以下代码,但出现错误:
索引器错误:(“2018年索引超出了轴0的范围,大小为27”,“发生在索引0上”)
请帮忙。多谢各位
# df_copy is my dataframe
column_list=[2018,2019]
weights=[6,9]
def test(df_copy):
if df_copy[2020]!=0:
W_Avg=sum(df_copy[column_list]*weights)
else:
W_Avg=0
return W_Avg
df_copy['sumpr']=df_copy.apply(test, axis=1)
df_复制
**|2020 | 2018 | 2019 | sumpr|**
|0 | 100 | 20 | 0 |
|1 | 30 | 10 | 270 |
|3 | 10 | 10 | 150 |
如果这张桌子看起来不像桌子,我很抱歉。我无法在Stackoverflow中正确创建表
对于特定行基本上,如果
2020 = 2 ,
2018 =30 ,
2019 =10 ,
sumpr= 30 * 9 + 10*9 = 270
列名很可能是字符串,而不是整数
要确认它,请运行
df_copy.columns
,您应该会收到如下消息:(注意列名周围的撇号)
因此,将列列表更改为:
在函数中,将列名也更改为字符串:
然后你的代码应该运行
您还可以运行更简洁的代码:
相关问题 更多 >
编程相关推荐