【发布时间】:2023-03-05 19:10:01
【问题描述】:
我有以下数据集:
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(未测试) -
成功了!感谢您的答复!我通常不会对整个数据框使用“应用”函数,所以我没有想到使用轴。