Pandas使用str.contains匹配Cycle行并提取数字的问题咨询
Pandas 匹配指定行提取数字解决方法
错误原因
你之前的写法存在逻辑错误:df['1'].str.contains('Cycle')返回的是布尔值序列(仅包含True/False),而非匹配到的原始字符串内容,后续调用.str.extract无法从布尔值中提取数字,会直接返回NaN,所以看起来Cycle行像消失了。
实现代码
核心思路是先标记含Cycle的行,仅对这部分行做数值提取,其余行保持原有内容不变:
# 1. 标记包含Cycle的行,na=False是为了避免空值报错 cycle_mask = df['1'].str.contains('Cycle', na=False) # 2. 仅对标记行处理:先提取括号内的内容,再提取所有数字,最后用逗号拼接 df.loc[cycle_mask, '1'] = df.loc[cycle_mask, '1']\ .str.extract(r'\((.*?)\)', expand=False)\ .str.findall(r'\d+')\ .str.join(',')
效果验证
运行上述代码后,你的DataFrame第一列会直接变成你需要的输出格式:
| 1 |
|---|
| 0 |
| A |
| B |
| C |
| 0,43 |
| A |
| B |
| C |
内容的提问来源于stack exchange,提问作者EA00
相关产品推荐
相关产品推荐

