KeyError:'col''发生在索引col'在应用函数期间[重复]
Posted
技术标签:
【中文标题】KeyError:\'col\'\'发生在索引col\'在应用函数期间[重复]【英文标题】:KeyError: 'col' 'occured at index col' during apply function [duplicate]KeyError:'col''发生在索引col'在应用函数期间[重复] 【发布时间】:2018-11-05 16:40:18 【问题描述】:我有以下数据集:
target | date | US_midi | UK_midi | NL_midi | BE_midi | FR_midi | SP_midi | PT_midi | SU_midi | COL_MIDI
23 1970 1 0 0 0 0 0 0 0 0
34 1970 0 0 1 0 0 0 0 0 0
34 1970 0 1 1 0 0 0 0 0 0
目前COL_MIDI
的值设置为 0,但如果*_MIDI
列中的任何 列,US_midi
和 SU_midi
除外,我想将其更改为 1变量设置为1
因此,在示例中,最后 2 行将获得 1
用于 COL_MIDI
变量
为此我写了如下函数:
def col_checker(x):
col_list = ['UK_midi', 'NL_midi', 'BE_midi', 'FR_midi', 'SP_midi', 'PT_midi']
for nation in col_list:
if x[nation] != 0:
x['COL_MIDI'] = 1
我使用以下命令运行:
df['COL_MIDI'] = df.apply(col_checker)
然而每次我遇到以下错误(并且值保持在 0)
('UK_midi', 'occurred at index target')
我尝试重置索引(无效)并检查了两个数据框,并将数据框保存为 csv 以进行检查 - 但无法检测到任何异常。所有列的长度和所有内容都相同,所以我不确定索引是如何弄乱的,也不知道为什么它会阻止我的脚本运行。
有人知道我做错了什么吗?
【问题讨论】:
您的df.apply(
中可能需要axis=1
(未测试)
成功了!感谢您的答复!我通常不会对整个数据框使用“应用”函数,所以我没有想到使用轴。
【参考方案1】:
这是实现您想要的更简单的方法
col_list = ['UK_midi', 'NL_midi', 'BE_midi', 'FR_midi', 'SP_midi', 'PT_midi']
df['COL_MIDI'] = (df[col_list].sum(axis=1) > 0) * 1
【讨论】:
以上是关于KeyError:'col''发生在索引col'在应用函数期间[重复]的主要内容,如果未能解决你的问题,请参考以下文章