我有以下 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.IntervalIndex
与map
一起使用:
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)