python - 我想根据条件用字符串替换数据框中的数字
问题描述
我有一个数据框,我想Score
用字符串替换列中的值。我想Score>=4
用“正面”和Score<=2
“负面”代替。
我试过loc
了,但它说类型错误。错误是:
类型错误:“str”和“int”的实例之间不支持“<=”
df.loc[df['Score']<=2 ,['Score']]='Positive'
df.loc[df['Score']>=4 ,['Score']]='Negative'
解决方案
该错误是由于您分两步执行操作。第一次通话后
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)
推荐阅读
- javascript - 在创建之前使用 Sequelize 模型验证来验证 JSON 对象
- javascript - 在 chorme 上使用鼠标滚轮进行跳跃滚动(Windows)
- node.js - AWS SQS+Lambda,我应该删除消息吗?节点JS
- p5.js - 具有已定义字段的 p5 画布
- r - 根据 R 数据框中的发生日期分配事件编号
- php - 需要一个以纯文本形式返回 PHP 数组定义的函数
- unit-testing - 是否有测试测试次数或其他计算参数的标准名称?
- sql - 实现 SCD2 的常见使用模式?
- arrays - 使用typedef struct变量作为C中相同typedef struct中其他变量的值
- javascript - Firefox 扩展中的 BlockingResponse