迭代列并重新分配值 - Pandas / Python

时间:2016-07-24 21:10:25

标签: python pandas dataframe

尝试使用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函数以代替实际列名称的任何原因都会引发错误?是否需要先将其转换为字符串或其他内容?

1 个答案:

答案 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

这完全正常,因为它已经是一个包含字符串值的列。