使用正则表达式过滤重复字符
Filtering repetitive characters using regex
我有一个数据框,
ID A1 A2
0 A123 1234
1 1111 5568
2 99999 NaN
3 a9999 NaN
4 3456 3456
5 3456 3456
6 NaN NaN
7 NaN NaN
我想过滤掉与第 1、2、3 行相似的重复字符的行
我使用了下面的代码
df['Fake_IDs'] = df["A1"].str.match(r'.*(\w)')
然而,这给了我所有具有小重复的字母数字。我有一个阈值,可以容忍同一字符最多重复 3 次。
我想重点过滤那些重复率高的字母/数字,比如最少 4 次到 9 次(比如 1111 / 99999999/ aaaaaaaaa)
想法是在新列中放置一个标识符作为 True 或 False,以便可以针对 True 案例过滤假 ID。
有办法实现吗?
非常感谢您的帮助!
您可以重复参考:
df['Fake_IDs'] = df["A1"].astype(str).str.match(r'.*(\w){3}')
或:
df['Fake_IDs'] = df["A1"].astype(str).str.contains(r'(\w){3}')
输出:
ID A1 A2 Fake_IDs
0 0 A123 1234.0 False
1 1 1111 5568.0 True
2 2 99999 NaN True
3 3 a9999 NaN True
4 4 3456 3456.0 False
5 5 3456 3456.0 False
6 6 NaN NaN False
7 7 NaN NaN False
8 8 A00000000 NaN True
我有一个数据框,
ID A1 A2
0 A123 1234
1 1111 5568
2 99999 NaN
3 a9999 NaN
4 3456 3456
5 3456 3456
6 NaN NaN
7 NaN NaN
我想过滤掉与第 1、2、3 行相似的重复字符的行
我使用了下面的代码
df['Fake_IDs'] = df["A1"].str.match(r'.*(\w)')
然而,这给了我所有具有小重复的字母数字。我有一个阈值,可以容忍同一字符最多重复 3 次。
我想重点过滤那些重复率高的字母/数字,比如最少 4 次到 9 次(比如 1111 / 99999999/ aaaaaaaaa)
想法是在新列中放置一个标识符作为 True 或 False,以便可以针对 True 案例过滤假 ID。
有办法实现吗? 非常感谢您的帮助!
您可以重复参考:
df['Fake_IDs'] = df["A1"].astype(str).str.match(r'.*(\w){3}')
或:
df['Fake_IDs'] = df["A1"].astype(str).str.contains(r'(\w){3}')
输出:
ID A1 A2 Fake_IDs
0 0 A123 1234.0 False
1 1 1111 5568.0 True
2 2 99999 NaN True
3 3 a9999 NaN True
4 4 3456 3456.0 False
5 5 3456 3456.0 False
6 6 NaN NaN False
7 7 NaN NaN False
8 8 A00000000 NaN True