假设现在我有一个包含 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
