我正在尝试基于列中的字符映射一个新值。这些是以字符串形式存储的数字。你知道吗
如果第一个字符的值是1,第二个字符是2-10
,则将其标记为“Lost”等
print(x[['Segment']].head(15))
Segment
0 12
1 12
2 22
3 14
4 54
5 12
6 12
7 56
8 12
9 12
10 22
11 12
12 310
13 22
14 53
我将使用的映射:
segt_map = {
r'[4-5][8-10]': 'Champion',
r'[4-5][4-7]': 'Loyal',
r'[4-5][2-3]': 'Recent',
r'3[6-10]': 'High Potential',
r'3[2-5]': 'Need Nurturing',
r'2[6-10]': 'Cannot Lose',
r'2[2-5]': 'At Risk',
r'1[2-10]': 'Lost',
}
并试图实现它:
x['Label'] = x['Segment'].replace(segt_map, regex=True)
error: bad character range 8-1 at position 6
我不确定我的错误是什么,我已经检查了相关的问题,它们和我的不一样。我看了6号位置,你可以看到上面。。我找不到range 8-1
?那么这里发生了什么?你知道吗
完整的错误跟踪很长,但是如果需要的话我可以发布它。你知道吗
您尝试使用regex来检测数字范围,而它是一个用于处理对数字一无所知的文本的工具。不能使用范围8-10,因为范围用于字符。可以使用
[1-9]
,因为它是关于字符的,但是[1-10]
是不正确的。相反,您应该解析文本ro编号,然后将它们与重写的范围进行比较。你知道吗字符类匹配字符而不是数字。
[8-10]
表示[8-1]
或[0]
。你想要这个:相关问题 更多 >
编程相关推荐