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

2024-09-28 21:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Postal Code   Region
2000
2001
3001
4001
4999
9013

我做了下面的操作,但是我得到了一个错误-“TypeError:类型为'int'的参数不可iterable”

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

如果您能提供一种更好的方式,通过一列所有整数进行迭代,并将邮政编码的特定范围映射到某些地区,我们将不胜感激

谢谢


Tags: 代码in区域类型df参数错误code
2条回答

我将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)

相关问题 更多 >