【发布时间】:2019-07-05 19:18:05
【问题描述】:
以前我有 anaconda 和 pandas 0.18。使用下面的代码,我通过函数“calc_func”进行了计算,并将结果分配给DataFrame的列,比如“A”和“B”。
df[["A", "B"]]=df.[["KV", "GV"]].apply(calc_func, axis=1)
将 pandas 升级到 0.24.1 后,此代码会生成 KeyError,因为“[Index(['A' 'B'], dtype='object')] 在 [columns] 中都没有”
我已经尝试了下面的代码,但得到了同样的错误。
df.loc[:,["A", "B"]]=df.loc[:,["KV", "GV"]].apply(calc_func, axis=1)
任何帮助将不胜感激。
下面是我的 calc_func:
def calc_func (_dataframe):
_limit15=v_limit15.get()
_limit20=v_limit20.get()
kvm=_veritabani["KV"]
gvm=_veritabani["GV"]
if kvm+gvm<=_limit15:
gvo=0.15
gv=gvm*gvo
elif kvm+gvm>_limit15 and kvm<=_limit15:
gv=(kvm+gvm-_limit15)*0.20+(_limit15-kvm)*0.15
gvo=gv/gvm
elif kvm>_limit15 and kvm+gvm<=_limit20:
gvo=0.20
gv=gvm*gvo
gvo=gv/gvm
elif kvm+gvm>_limit20 and kvm<=_limit20:
gv=(kvm+gvm-_limit20)*0.27+(_limit20-kvm)*0.20
gvo=gv/gvm
return [gvo, gv]
【问题讨论】:
-
没有示例功能的硬测试,但是如何工作
df[["A", "B"]] = pd.DataFrame(df[["KV", "GV"]].apply(calc_func, axis=1), index=df.index)? -
我的程序没有其他变化。只是将 pandas 从 0.18 更新到 0.24。
-
我添加了我的 calc_func。
-
@jezrael 感谢您的帮助。这行得通。
-
超级,答案已编辑。