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()
, но не могу понять, как он работает со словарями.
Ответы
Ответ 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 с нужным столбцом. Это может помочь.