![](/img/trans.png)
[英]Replace values in pandas dataframe column with different replacement dict based on condition
[英]How to replace Pandas column values based on dict in Python?
我有以下熊貓 DF:
ID Country
----------
01 "it"
02 "es"
03 "de"
04 "ch"
05 "in"
06 "ca"
我想將 2 個字母的國家/地區代碼替換為適當的大陸名稱,如下所示:
ID Country
----------
01 "europe"
02 "europe"
03 "europe"
04 "asia"
05 "asia"
06 "america"
我收集了一個字典,其中鍵為大陸名稱,值作為屬於各個大陸的國家代碼列表:
> country_dict
{'europe': ['it', 'es', 'de', 'gb'],
'asia': ['in', 'ch', 'ru'],
'america': ['us', 'ca']}
到目前為止我能做的最好的:
for continent in country_dict.keys():
df.Country.replace(country_dict[continent], continent)
但這似乎不太優雅。 有更好的主意嗎?
你的 dict 是倒退的。
>>> import pandas as pd
>>> df = pd.DataFrame(['it', 'es'], columns=['Country'])
>>> df
Country
0 it
1 es
>>> country_dict = {'europe': ['it', 'es', 'de', 'gb'],
'asia': ['in', 'ch', 'ru'],
'america': ['us', 'ca']}
>>> country_dict = {v: k for k, vs in country_dict.items() for v in vs}
>>> country_dict
{'it': 'europe', 'es': 'europe', 'de': 'europe', 'gb': 'europe', 'in': 'asia', 'ch': 'asia', 'ru': 'asia', 'us': 'america', 'ca': 'america'}
>>> df.replace(country_dict)
Country
0 europe
1 europe
更改country_dict
基值和鍵然后使用pandas.Series.map
可能會很棘手:
>>> dct = {v:k for k,val in country_dict.items() for v in val}
>>> df['Country'] = df['Country'].map(dct)
>>> df
Country
0 europe
1 europe
2 europe
3 asia
4 asia
5 america
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.