Применить карту для строк NaN в DataFrame, Python 3.6 - PullRequest
2 голосов
/ 04 июля 2019

Topic_Details

                   Topic Source_Code      Anchor            Sub_Topic_Dataset            Dataset_Id
42  Macroeconomic Accounting Systems      GESAMT              Financial Accounts ESA 1995    DBB_GESAMTFAE12019
43  Macroeconomic Accounting Systems      GESAMT  GESAMTFINZ  Financial Accounts ESA 2010  DBB_GESAMTFINANZ2019
44  Macroeconomic Accounting Systems      GESAMT  GESAMTVOLK            National Accounts    DBB_GESAMTVOLK2019

Dataset_List:

       anchor                     text_eng            Dataset_Id
0  GESAMTVOLK            National             DBB_GESAMTVOLK2019
0  GESAMTFINZ  Financial accounts           DBB_GESAMTFINANZ2019
0              Financial accounts ESA 1995                   NaN

Сценарий карты:

MapDF = dict(zip(Topic_Details['Sub_Topic_Dataset'].str.upper(), Topic_Details['Dataset_Id']))
Dataset_List['Dataset_Id'] = Dataset_List['text_eng'].apply(str.upper).map(MapDF)

Я просто хочу запустить скрипт ниже для Dataset_List, где Dataset_Id == NaN, не для других строк.

Dataset_List['Dataset_Id'] = Dataset_List['text_eng'].apply(str.upper).map(MapDF)

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Альтернативный раствор:

desired_subset = Dataset_List[Dataset_List['Dataset_Id'].isnull()]
desired_subset['Dataset_Id'] = desired_subset['text_eng'].apply(str.upper).map(MapDF)
1 голос
/ 04 июля 2019

попробуйте передать результат apply в fillna:

Dataset_List['Dataset_Id'].fillna(Dataset_List['text_eng'].apply(str.upper).map(MapDF), inplace=True)

Он может принять Серию в качестве значения, и для каждого NaN он использует значение с таким жеиндекс.

...