我不得不清理带有成员身份的列,但是,有很多随机输入值,如'0000000'、'99999'、'*'、'na'。你知道吗
会员id是序列号。成员ID的格式从4位到12位,其中:
4位数字-9位数字从任何非零数字开始,10到12位数字从1000xxxxxxxx开始。你知道吗
对不起,没有描述清楚的格式在开始,我刚刚发现的ID未能满足这一标准是一个无效的。我想把这些非会员身份证格式全部区分为0,谢谢帮助。你知道吗
member_id
1 176828287
2 176841791
3 202142958
4 222539874
5 223565464
6 224721631
7 227675081
8 30235355118
9 %
10 ---
11 .
12 .215694985
13 0
14 00
15 000
16 00000000000000
17 99999999999999
18 999999999999999
19 : 211066980
20 D5146159
21 JulieGreen
22 N/a
23 NONE
24 None
25 PP - Premium Pr
26 T0000
27 T0000019
28 T0000022
如果我理解正确,使用regex表达式=
\A((1000\d{8})|([1-9]\d{3,10}))\Z
将满足您的要求。你知道吗上面的正则表达式与下面的匹配:
以
1000
4到11位,必须以
1
下面是一个演示:
输出:
pandas
有内置的字符串函数,其中包括模式匹配算法。因此,您可以轻松创建一个布尔掩码,以区分有效id和无效id:
要仅打印有效行,只需使用掩码作为索引:
要将无效数据设置为
0
,只需使用掩码的补码:是否已经生成了一个正则表达式,该正则表达式满足要用0替换的数据的条件?如果没有,就必须创建一个,或者为要替换的单个项创建一个字典
terms = {'N/a':0, ' -':0}
,然后对序列调用.map(terms)。你知道吗相关问题 更多 >
编程相关推荐