Skip to main content
 首页 » 编程设计

python之将美国州名映射到字典中分别给出的两个字母首字母缩略词

2025年05月04日16powertoolsteam

假设现在我有一个包含 2 列的 dataframe:State 和 City。

然后我有一个单独的 dict,每个州都有两个字母的首字母缩写词。现在我想添加第三列来映射状态名称及其两个字母的首字母缩写词。我应该在 Python/Pandas 中做什么?例如示例问题如下:

import pandas as pd 
a = pd.Series({'State': 'Ohio', 'City':'Cleveland'}) 
b = pd.Series({'State':'Illinois', 'City':'Chicago'}) 
c = pd.Series({'State':'Illinois', 'City':'Naperville'}) 
d = pd.Series({'State': 'Ohio', 'City':'Columbus'}) 
e = pd.Series({'State': 'Texas', 'City': 'Houston'}) 
f = pd.Series({'State': 'California', 'City': 'Los Angeles'}) 
g = pd.Series({'State': 'California', 'City': 'San Diego'}) 
state_city = pd.DataFrame([a,b,c,d,e,f,g]) 
state_2 = {'OH': 'Ohio','IL': 'Illinois','CA': 'California','TX': 'Texas'} 

现在我必须使用 state_2 字典映射 df state_city 中的列 State。映射的 df state_city 应包含三列:state、city 和 state_2letter .

我的原始数据集有多个列,几乎包含所有美国主要城市。

因此手动操作效率会较低。有什么简单的方法吗?

请您参考如下方法:

首先,在字典中存储键值对(如 state name: abbreviation)可能更容易,如下所示:

state_2 = {'Ohio': 'OH', 'Illinois': 'IL', 'California': 'CA', 'Texas': 'TX'} 

您可以轻松实现:

state_2 = {state: abbrev for state, abbrev in state_2.items()} 

使用pandas.DataFrame.map:

>>> state_city['abbrev'] = state_city['State'].map(state_2) 
>>> state_city 
          City       State abbrev 
0    Cleveland        Ohio     OH 
1      Chicago    Illinois     IL 
2   Naperville    Illinois     IL 
3     Columbus        Ohio     OH 
4      Houston       Texas     TX 
5  Los Angeles  California     CA 
6    San Diego  California     CA