You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

筛选DataFrame特定格式行并提取指定字段的有效方法

解决方法

直接用Pandas的字符串正则匹配和提取功能就能搞定,分两步走:

1. 筛选符合格式的行

先把带「路径+两组冒号分隔数字」的行挑出来,用str.contains配合正则表达式精准匹配:

# 筛选符合格式的条目:行尾满足「冒号+空格+路径+冒号+数字+冒号+数字」结构
filtered_df = df[df['LineEntry'].str.contains(r': /[^:]+:\d+:\d+$')]

正则说明:r': /[^:]+:\d+:\d+$' 里,[^:]+匹配不含冒号的路径部分,\d+匹配数字,$锚定行尾,确保只匹配完全符合要求的行。

2. 提取最后两个冒号分隔的数字

用str.extract直接从筛选后的行里提取两个数字,自动生成新列:

# 把两个数字分别提取到num1和num2列
filtered_df[['num1', 'num2']] = filtered_df['LineEntry'].str.extract(r': (\d+):(\d+)$')

这里的正则r': (\d+):(\d+)$'会精准捕获行末尾的两组数字,分组后自动映射到新列中。

一步到位的简化写法

也可以直接提取,同时过滤掉提取失败的行(结果为NaN的行):

# 提取数字并生成新列
df[['num1', 'num2']] = df['LineEntry'].str.extract(r': (\d+):(\d+)$')
# 移除提取无效的行
df = df.dropna(subset=['num1', 'num2'])

你之前用re.split报错,是因为不符合格式的行冒号数量不足,取res[3]、res[4]会触发索引越界。用正则匹配+提取的方式更稳妥,既能精准定位目标内容,还能自动过滤无效行。

内容的提问来源于stack exchange,提问作者user1846251

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:42:16