在Python 3.6的DataFrame中为NaN行应用映射
专题(详情)在Python 3.6的DataFrame中为NaN行应用映射,python,python-3.x,pandas,dataframe,map-function,Python,Python 3.x,Pandas,Dataframe,Map Function,专题(详情) Topic Source_Code Anchor Sub_Topic_Dataset Dataset_Id 42 Macroeconomic Accounting Systems GESAMT Financial Accounts ESA 1995 DBB_GESAMTFAE12019 43 Macroeconomic Accounting Sy
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
数据集列表:
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\u列表,其中Dataset\u Id==NaN,而不是其他行
Dataset_List['Dataset_Id'] = Dataset_List['text_eng'].apply(str.upper).map(MapDF)
尝试将
apply
的结果传递给:
Dataset_List['Dataset_Id'].fillna(Dataset_List['text_eng'].apply(str.upper).map(MapDF),inplace=True)
它可以接受一个系列作为值,并且对于每个NaN,它使用具有相同索引的值。替代解决方案:
desired_subset = Dataset_List[Dataset_List['Dataset_Id'].isnull()]
desired_subset['Dataset_Id'] = desired_subset['text_eng'].apply(str.upper).map(MapDF)
你什么意思
fillna
不会更改非NaNSorry的行的值。如果是我的错误,请更正答案。