如果我有一个带有邮政编码的数据框,我想创建一个标记为“地区”的新列,该列将包含多个邮政编码范围,并将它们分配给特定区域。例如
如果邮政编码是1000--1209,则该区域应为“ NSW”
myregion={ 1000:'NSW', 1001:'NSW'}
Postal Code
1000
1001
...
1209
2000
2001
299
所需的数据框为:
Postal Code Region
1000 NSW
1001 NSW
...
1209 NSW
2000
2001
299
我将如何在python中执行此操作?正确的语法是什么?非常感谢!
答案 0 :(得分:1)
假设您的数据帧称为df
:
def get_region(postal_code):
if postal_code >= 1000 and postal_code <= 1209:
return 'NSW'
...other cases...
df['Region'] = df['Postal Code'].apply(lambda x: get_region(x))
答案 1 :(得分:0)
第一个选择是使用邮政编码api ...最好选择一个。 第二种选择是手动创建一个函数,该函数将数字映射到字符串,然后在数据框上使用.map在其中创建新的Series。
答案 2 :(得分:0)
基于
如果邮政编码是1000--1209,则该区域应为“ NSW”
我想到了这个
def assign_region(x):
myregion = { 'NSW': range(1000, 1210)
# etc
}
for region, r in myregion.items():
if x in r:
return region
df['Region'] = df['Postal Code'].apply(assign_region)
答案 3 :(得分:0)
np.where
允许向量化操作:
df['Region'] = np.where((df['Postal Code']>=1000)&(df['Postal Code']<=1209), 'NSW', '')