如何判断DataFrame中数值是否存在7位及以上连续重复序列
解决方案:识别包含7位及以上连续重复数字的记录
问题背景
现有如下DataFrame:
import pandas as pd df1 = pd.DataFrame({'number': ['1111112357896', '45226212354444', '150000000064', '5485329999999', '4589622567431']})
需求:为每条记录标记是否包含7位及以上连续重复数字,符合条件标记为1,否则为0,最终目标结果如下:
| 数值 | 符合标记 |
|---|---|
| 1111112357896 | 0 |
| 45226212354444 | 0 |
| 150000000064 | 1 |
| 5485329999999 | 1 |
| 4589622567431 | 0 |
实现步骤
利用正则表达式结合pandas字符串方法可快速实现需求:
- 定义匹配规则:正则表达式
r'(\d)\1{6,}',其中:(\d):捕获任意单个数字\1{6,}:表示捕获的数字连续重复至少6次(加上前面的1次,总长度≥7)
- 使用
str.contains方法判断每条记录是否匹配规则,将布尔结果转换为整数(True→1,False→0)
完整代码
import pandas as pd df1 = pd.DataFrame({'number': ['1111112357896', '45226212354444', '150000000064', '5485329999999', '4589622567431']}) # 定义正则模式,匹配7位及以上连续重复数字 pattern = r'(\d)\1{6,}' # 添加符合标记列 df1['符合标记'] = df1['number'].str.contains(pattern).astype(int) # 输出格式化后的结果 print(df1.rename(columns={'number': '数值'}))
结果验证
运行代码后输出结果与目标完全一致:
数值 符合标记 0 1111112357896 0 1 45226212354444 0 2 150000000064 1 3 5485329999999 1 4 4589622567431 0
内容的提问来源于stack exchange,提问作者Aizhan Askhatova
相关产品推荐
相关产品推荐

