Преобразование словаря Python с несколькими ключами в фрейм данных с несколькими столбцами, совпадающими с ключами - PullRequest
0 голосов
/ 31 мая 2018

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

dict = {('County', 'State'):'CountyType'}
df = pd.DataFrame(data=['County','State'])

Я хотел бы создать новый столбец CountyType, используя dict для отображения на два столбца вdf.Однако выполнение следующего дает мне ошибку.Как еще это можно сделать?

df['CountyType'] = (list(zip(df.County,df.State)))
df = df.replace({'CountyType': county_type_dict)

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вы можете создать MultiIndex из двух серий, а затем отобразить карту.Данные из @ ALollz.

df['CountyType'] = df.set_index(['County', 'State']).index.map(dct.get)

print(df)

  County  State CountyType
0      A      1        One
1      A      2       None
2      B      1       None
3      B      2        Two
4      B      3      Three
0 голосов
/ 31 мая 2018

Если у вас есть следующий словарь с кортежами в качестве ключей и DataFrame со столбцами, соответствующими значениям кортежей

import pandas as pd
dct = {('A', 1): 'One', ('B', 2): 'Two', ('B', 3): 'Three'}
df = pd.DataFrame({'County': ['A', 'A', 'B', 'B', 'B'],
                   'State': [1, 2, 1, 2, 3]})

Вы можете создать Series кортежей из ваших df изатем просто используйте .map()

df['CountyType'] = pd.Series(list(zip(df.County, df.State))).map(dct)

Результаты в

  County  State CountyType
0      A      1        One
1      A      2        NaN
2      B      1        NaN
3      B      2        Two
4      B      3      Three
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...