DataFrame.replace по вложенному dict - PullRequest
1 голос
/ 21 марта 2019

У меня огромный Dataframe, где нужно изменить множество записей.Итак, я создал переводный текст, который имеет следующую структуру:

{'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 утверждает, что словарь выглядит как Однако одни и те же значения необходимо обменивать несколько раз, что (я полагаю) приводит к ошибке:

Замена не допускается с перекрывающимися ключами и значениями

Вот фрагмент Dataframe. Есть ли способ избежать этой ошибки?Я попробовал некоторые подходы с apply и map, но, к сожалению, они не сработали.

Заранее спасибо и с наилучшими пожеланиями, Макс

1 Ответ

0 голосов
/ 21 марта 2019

Возможно, есть более питонический способ, но этот код работает для меня;

for col in your_dict.keys():
    df[col].replace(your_dict[col], inplace=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...