python中整数范围到字典的映射

python中整数范围到字典的映射,python,pandas,dictionary,integer,range,Python,Pandas,Dictionary,Integer,Range,如果我有一个带有邮政编码的数据框,我想创建一个标记为“Region”的新列,它接受多个邮政编码范围,并将它们分配给特定的区域。前 如果邮政编码为1000-1209,则该地区应为“新南威尔士州” myregion={ 1000:'NSW', 1001:'NSW'} 所需的数据帧为: Postal Code Region 1000 NSW 1001 NSW ... 1209 NSW 2000 2001 299 在python中如何实现这一点?正

如果我有一个带有邮政编码的数据框,我想创建一个标记为“Region”的新列,它接受多个邮政编码范围,并将它们分配给特定的区域。前

如果邮政编码为1000-1209,则该地区应为“新南威尔士州”

myregion={ 1000:'NSW', 1001:'NSW'}

所需的数据帧为:

Postal Code  Region
1000         NSW
1001         NSW
...
1209         NSW
2000
2001
299

在python中如何实现这一点?正确的语法是什么?非常感谢

第一个选项是使用邮政编码api。。。用你最喜欢的。
第二个选项是手动创建一个函数,该函数将数字映射为字符串,然后在数据帧上使用.map在其中创建新的序列。

假设您的数据帧被称为
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))
def get_地区(邮政编码):
如果邮政编码>=1000且邮政编码基于

如果邮政编码为1000-1209,则该地区应为“新南威尔士州”

myregion={ 1000:'NSW', 1001:'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)

np.其中
允许矢量化操作:

df['Region'] = np.where((df['Postal Code']>=1000)&(df['Postal Code']<=1209), 'NSW', '')

df['Region']=np.where((df['Postal code']>=1000)和(df['Postal code']建议您可以存储
NSW:range(10001210)
我尝试过这个方法,但对range不起作用。请记住
range(x,y)
包含从x到y-1的数字,并相应地输入数据。