python - 替换熊猫 DatafFame 中的值
问题描述
我在熊猫列中有以下值:id,score
0, [{'val': 'ABC', 'xyz': 12.094842910767}]
1, [{'val': 'ABC', 'xyz': 2.3494842910767}]
2, [{'val': 'CDE', 'xyz': 5.422094842910767}]
3, [{'val': 'CDE', 'xyz': 0.22094842910767}]
4, [{'val': 'ABC', 'xyz': 0.2094842910767}]
我想替换“分数”列中的值
我想更换:
- " [{'value': 'ABC' *" with ' ABC '
- [{'value': 'CDE' *" with ' CDE '
我尝试了不同的方法,但没有得到单个值的预期结果
pd['score'] = pd['score'].to_replace=r"^[{'val': 'AB.$", value='ABC', regex=True
两者都试过
pd['score'] = pd['score'].map({"^[{'val': 'AB.$": 'ABC', "^[{'val': 'CD.$": 'CDE'})
甚至
pd.replace({"score": r"^[{'val': 'AB.$"}, {"score": "ABC"}, regex=True)
解决方案
使用regex
可能是到达那里的最佳方式,但如果您发布的内容完全代表您的整个数据集,您可以使用str.split()
和一些操作来到达那里:
df['score_refined'] = df['score'].str.split(' ',1).str[1].str[:5]
会给你:
df
id score score_refined
0 0 {'val': 'ABC', 'xyz': 12.094842910767}] 'ABC'
1 1 {'val': 'ABC', 'xyz': 2.3494842910767}] 'ABC'
2 2 {'val': 'CDE', 'xyz': 5.422094842910767}] 'CDE'
3 3 {'val': 'CDE', 'xyz': 0.22094842910767}] 'CDE'
4 4 {'val': 'ABC', 'xyz': 0.2094842910767}] 'ABC'
推荐阅读
- android - “无法访问 MobileFirst 服务器。响应代码:”Maximo Work Execution 7.6.3.1 IFIX 001 错误
- mysql - rds 有很多消息 读取通信包时出错
- sql - 如何将Excel中的数据插入数据库
- sql-server - 存储过程中始终加密的查询
- java - Spring Boot 应用程序组织的最佳实践是什么?
- r - dplyr::group_modify 应用函数
- cordova - Cordova Longpress 在 iOS 上不工作(但在 Android 上工作)
- aws-lambda - 如何在 boto3 aws lambda 中使用资源方法创建标签
- javascript - 使用 javascript、html 和 laravel 多上传
- python - python中日期时间值的列/列表运算符