python - DataFrame.replace 为嵌套字典
问题描述
我有一个巨大的数据框,需要更改很多条目。所以,我创建了一个翻译字典,它具有以下结构:
{'Data.Bar Layer': {'1': 0,
'1.E': 21,
'2': 13,
'2.E': 22,
'3': 14,
'3.E': 24,
'4': 15,
'4.E': 23,
'B': 16,
'CL1': 1,
'CL2': 2,
'CL2a': 6,
'CL3': 3,
'CL3a': 4,
'CL4': 5,
'E': 18,
'L1': 7,
'L2': 8,
'L2a': 12,
'L3': 9,
'L3a': 10,
'L4': 11,
'T': 17,
'T&B': 19,
'T+B': 20},
'Data.Bar Type': {'N': 0, 'R': 1},
'Data.Defined No. Bars': {'No': 0, 'Yes': 1},
'Data.Design Option': {'-1': 0, 'Main Model': 1},...}
第一个键对应于数据框列,第二个键对应于需要更改的值,例如列中的Data.Bar Layer
所有值'1'
都应为 0。这就是 pandas.dataframe.replace 的文档说明字典的样子
但是,相同的值必须多次交换,这(我猜)会导致错误:
不允许使用重叠的键和值进行替换
这是数据框的片段。有什么办法可以避免这个错误吗?我尝试了一些使用 apply 和 map 的方法,但不幸的是它们没有奏效。
在此先感谢和亲切的问候, Max
解决方案
可能有一种更 Pythonic 的方式,但这段代码对我有用;
for col in your_dict.keys():
df[col].replace(your_dict[col], inplace=True)
推荐阅读
- scala - 绝对 URI 中的相对路径:txt Spark mac
- mongodb - 在 mongodb 中执行此操作的最佳方法是什么?
- dji-sdk - 如何删除 UXSDKDemo 中第一人称视图上方出现的“UNKNOWN”/“MAVIC PRO CAMERA”文本?
- java - Rest Get 方法返回不正确的元素名称
- html - 自定义 Wowza 播放器界面
- javascript - 发布请求 - 以 json 格式发送数据
- c - 程序运行,调用函数,但我在 STM32L1 上没有“输出”
- sql - 在船舶周 sql 中映射日期
- java - 为什么我的程序在检查java中的第二个条件之前终止
- redis - Yii2 RBAC Redis - 怎么了?