<p><code>pandas</code>有内置的字符串函数,其中包括模式匹配算法。<br/>
因此,您可以轻松创建一个布尔掩码,以区分有效id和无效id:</p>
<pre><code>pattern = r'1000\d{6,8}$|[1-9]\d{3,8}$'
mask = df.member_id.str.match(pattern)
</code></pre>
<p>要仅打印有效行,只需使用掩码作为索引:</p>
<pre><code>print(df[mask])
member_id
1 176828287
2 176841791
3 202142958
4 222539874
5 223565464
6 224721631
7 227675081
</code></pre>
<p>要将无效数据设置为<code>0</code>,只需使用掩码的补码:</p>
<pre><code>df.loc[~mask] = 0
print(df)
member_id
1 176828287
2 176841791
3 202142958
4 222539874
5 223565464
6 224721631
7 227675081
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
20 0
21 0
22 0
23 0
24 0
25 0
26 0
27 0
28 0
</code></pre>