为 DataFrame 中的 NaN 行应用 Map,Python 3.6

Apply Map for NaN rows in DataFrame, Python 3.6

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)

尝试将 apply 的结果传递给 fillna:

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

它可以接受一个 Series 作为值,并且对于每个 NaN 它都使用具有相同索引的值。

替代解决方案:

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