在 python 中将代码范围映射到字符串



我有以下 df 我想映射。邮政编码是一种 int 类型,我想创建一个区域列,其中包含属于特定范围内的代码以映射到特定区域,例如

范围(2000-2999(:"新南威尔士州", 范围(3000-3999(:"维多利亚", 范围(4000-5000(:"某物", 9013:"袋鼠">

Postal Code   Region
2000
2001
3001
4001
4999
9013

我做了下面的事情,但是,我得到了一个错误 - "类型错误:类型'int'的参数不可迭代">

df['Region']=df['Postal Code'].apply(lambda x:next((v for k, v in postal.items() if x in k),0))

如果您能提供更好的方法来遍历包含所有整数的列并将邮政编码的特定范围映射到某些区域,我们将不胜感激!

谢谢

我会pd.IntervalIndexmap一起使用:

s = pd.Series(['NSW', 'Victoria', 'Something', 'Kangaroo'], 
index=pd.IntervalIndex.from_arrays([9013,2000,3000,4000],
[9013,2999,3999,5000], 
closed='both'))
df['Region'] = df['Postal Code'].map(s)
print(df)

输出:

Postal Code     Region
0         2000   Victoria
1         2001   Victoria
2         3001  Something
3         4001   Kangaroo
4         4999   Kangaroo
5         9013        NSW

发生错误是因为您将,0放在错误的括号中。

df['Region']=df['Postal Code'].apply(lambda x:next((v for k, v in postal.items() if x in k)),0)

相关内容

最新更新