【问题标题】:pandas 0.24.1 Key Error: "None of [Index(['A' 'B'], dtype='object')] are in the [columns]"pandas 0.24.1 键错误:“[索引(['A''B'],dtype='object')] 都在 [列] 中”
【发布时间】: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 感谢您的帮助。这行得通。
  • 超级,答案已编辑。

标签: python pandas


【解决方案1】:

更改函数以返回 Series 并指定索引:

return pd.Series([gvo, gv], index=['A','B'])

【讨论】:

    猜你喜欢
    • 2021-08-06
    • 2021-10-29
    • 2012-11-19
    • 1970-01-01
    • 2012-04-06
    • 2021-04-28
    • 2012-12-18
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多