我有一個province包含USA states and Canada province大寫和小寫名稱的熊貓資料框列
df.province
輸出
MANITOBA
Alberta
CA
OH
映射所有加拿大省值的字典
ca_provinces_dic = {
'Newfoundland and Labrador': 'NL',
'Prince Edward Island': 'PE',
'Nova Scotia': 'NS',
'New Brunswick': 'NB',
'Quebec': 'QC',
'Ontario': 'ON',
'Manitoba': 'MB',
'Saskatchewan': 'SK',
'Alberta': 'AB',
'British Columbia': 'BC',
'Yukon': 'YT',
'Northwest Territories': 'NT',
'Nunavut': 'NU',
}
如何province使用處理該case matching問題的Pandas將所有值與其各自的短格式進行映射?
例如 - 我想將所有province column values(小寫)與所有dictionary keys(小寫)進行比較,并根據匹配我將為省列值應用適當的簡短形式(僅在適用的情況下)
我目前對這個問題的嘗試。
canada_provinces_dic = {
'Newfoundland and Labrador': 'NL',
'Prince Edward Island': 'PE',
'Nova Scotia': 'NS',
'New Brunswick': 'NB',
'Quebec': 'QC',
'Ontario': 'ON',
'Manitoba': 'MB',
'Saskatchewan': 'SK',
'Alberta': 'AB',
'British Columbia': 'BC',
'Yukon': 'YT',
'Northwest Territories': 'NT',
'Nunavut': 'NU',
}
def handle_state(data_attr):
for k, v in canada_provinces_dic.items():
if data_attr.strip().lower() == k.lower():
return canada_provinces_dic[k]
else:
return data_attr
df['state'] = df.state.apply(handle_state)
uj5u.com熱心網友回復:
使用Series.map和Series.fillna:
首先將您的 dict 轉換為小寫的鍵:
In [638]: ca_provinces_dic = {k.lower():v for k,v in ca_provinces_dic.items()}
In [659]: df['province'] = df['province'].str.lower().map(ca_province_dict).fillna(df['province'])
In [660]: df
Out[660]:
province
0 MB
1 AB
2 CA
3 OH
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/358221.html
上一篇:如何求平均速度?
