首页 > 解决方案 > 我想根据条件用字符串替换数据框中的数字

问题描述

我有一个数据框,我想Score用字符串替换列中的值。我想Score>=4用“正面”和Score<=2“负面”代替。

我试过loc了,但它说类型错误。错误是:

类型错误:“str”和“int”的实例之间不支持“<=”

df.loc[df['Score']<=2 ,['Score']]='Positive'
df.loc[df['Score']>=4 ,['Score']]='Negative'

在此处输入图像描述

标签: pythondataframe

解决方案


该错误是由于您分两步执行操作。第一次通话后

df.loc[df['Score']<=2 ,['Score']]='Positive'

你有一列混合类型('Positive'字符串和原始数字)。然后你在整个列中
搜索值:这包括你刚刚替换的字符串,引发错误>=4'Positive'

类型错误:“str”和“int”的实例之间不支持“<=”

因为您正在将字符串与整数进行比较。

一个可能的解决方案是在一个步骤中进行替换,例如使用apply自定义函数。

def replacing(x):
    if x <= 2:
        return 'Positive'
    elif x >= 4:
        return 'Negative'
    else:
        return x #needed in case you have a 3

df['Score'] = df['Score'].apply(replacing)

推荐阅读