首页 > 解决方案 > 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

标签: pythonpandasdataframe

解决方案


可能有一种更 Pythonic 的方式,但这段代码对我有用;

for col in your_dict.keys():
    df[col].replace(your_dict[col], inplace=True)

推荐阅读