我有一个类似的数据集:
> Country Code
> 'Bolivia' NaN
> 'Bolivia, The Republic of' NaN
我也有字典
> CountryCode = {'BOL':['Bolivia','Bolivia, The Republic of']}
如果值之一在字典中,如何使用相应的键继续在数据框中填充fillna?
所需的输出是
> Country Code
> 'Bolivia' 'BOL'
> 'Bolivia, The Republic of' 'BOL'
感谢您的帮助!
答案 0 :(得分:1)
使用CountryCode
列创建Country
和map
的反向字典:
new_countrycode = {v:key for key,value in CountryCode.items() for v in value}
df['Code'] = df['Country'].map(new_countrycode)
print(df)
Country Code
0 Bolivia BOL
1 Bolivia, The Republic of BOL
print(new_countrycode)
{'Bolivia': 'BOL', 'Bolivia, The Republic of': 'BOL'}
答案 1 :(得分:1)
使用.apply()
df["Code"] = df.Country.apply(lambda x: ''.join(i for i, j in CountryCode.items() if x in j))
输出:
Country Code
0 Bolivia BOL
1 Bolivia, The Republic of BOL
答案 2 :(得分:0)
df=pd.DataFrame({'Country':['Bolivia','Bolivia, The Republic of'],'code':[None,None]})
从键值代码字典创建数据框
df_keyval=pd.DataFrame({'CountryCode':{'BOL':['Bolivia','Bolivia, The Republic of']}}).reset_index()
匹配国家/地区并获取相应的密钥:
for idx,rows in df.iterrows():
if rows['Country'] in df_keyval.CountryCode[0]:
df['code']=df_keyval.index[0]
输出:
Country code
0 Bolivia BOL
1 Bolivia, The Republic of BOL