【发布时间】:2021-12-27 19:51:05
【问题描述】:
我有一个 pandas 数据框列 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',
}
如何使用处理 case matching 问题的 pandas 将所有 province 值与其各自的短格式映射?
例如 -
我想将所有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)
【问题讨论】:
标签: python python-3.x pandas dataframe dictionary