Подтвердить что ты не робот

Pandas - добавить новый столбец в dataframe из словаря

Я хотел бы добавить столбец "D" в такт данных:

U,L
111,en
112,en
112,es
113,es
113,ja
113,zh
114,es

на основе следующего Словаря:

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}

чтобы результирующий фрейм данных отображался как:

U,L,D
111,en,en
112,en,en
112,es,en
113,es,es
113,ja,es
113,zh,es
114,es,es

Пока я пробовал метод pd.join(), но не могу понять, как он работает со словарями.

4b9b3361

Ответ 1

Вызвать map и передать dict, это выполнит поиск и вернет связанное значение для этого ключа:

In [248]:

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}
df['D'] = df['U'].map(d)
df
Out[248]:
     U   L   D
0  111  en  en
1  112  en  en
2  112  es  en
3  113  es  es
4  113  ja  es
5  113  zh  es
6  114  es  es

Ответ 2

Вот более простой способ, который тоже должен хорошо работать:

df["D"] = pd.Series(d)

Примечание. Для этого необходимо, чтобы ключи dict были в индексе DataFrame.

Ответ 3

У меня возникла ошибка TypeError: 'dict' object is not callable для решения EdChum, когда я пытаюсь использовать index.map()... И я не нашел способ получить индекс как Серии.

Итак, я нашел другое решение этой проблемы, сначала создав объект Series из объекта dict.

new_d = pd.Series(d)

И затем сделайте pd.join с нужным столбцом. Это может помочь.