尝试使用for循环迭代列并将Yes和No更改为1和0.
出于某种原因,我在尝试此操作时收到无效的类型比较错误:
Panda DataFrame有多列,其中一列是“合并”
for col,row in d.iteritems():
d.loc[d[col] == 'No', col] = 0
d.loc[d[col] == 'Yes', col] = 1
TypeError:无效的类型比较
为了进行比较,我可以在单个列上成功执行此操作而不会出现问题:
d.loc[d['Combined'] == 'No', 'Combined'] = 0
d.loc[d['Combined'] == 'Yes', 'Combined'] = 1
将col的值插入loc函数以代替实际列名称的任何原因都会引发错误?是否需要先将其转换为字符串或其他内容?
答案 0 :(得分:0)
必须有一些采用整数值的列,对于那些行,它是一个"无效的比较"。因此,只需检查它是否是str的一个实例,你就可以了。
for col,row in d.iteritems():
if isinstance(row[0], str):
d.loc[d[col] == 'No', col] = 0
d.loc[d[col] == 'Yes', col] = 1
出于同样的原因
d.loc[d['Combined'] == 'No', 'Combined'] = 0
这完全正常,因为它已经是一个包含字符串值的列。