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

如何筛选pandas DataFrame中两列含相同phase编号的行

pandas筛选两列phase编号匹配的行

全程用pandas内置字符串向量化方法实现,无需写逐行循环,执行效率高,步骤如下:

  • 首先导入pandas,构造示例数据(已有DataFrame可跳过该步)
import pandas as pd

df = pd.DataFrame({
    'data1': ['overall_phase1_b3', 'overall_phase2_b3', 'overall_phase3_b3'],
    'data2': ['overall_phase1_b5', 'overall_phase5_b5', 'overall_phase3_b5']
})
  • 提取两列中phase对应的编号:用正则phase(\d+)捕获phase后跟随的数字,就是需要比对的编号值
# 先存为临时列,逻辑更清晰易排查
df['p1'] = df['data1'].str.extract(r'phase(\d+)')
df['p2'] = df['data2'].str.extract(r'phase(\d+)')
  • 筛选两列编号相等的行,删除临时辅助列即可得到结果
result = df[df['p1'] == df['p2']].drop(columns=['p1', 'p2'])

如果不想生成临时辅助列,也可以直接一行完成筛选,效果完全一致:

# 无临时列的简洁写法
result = df[df['data1'].str.extract(r'phase(\d+)')[0] == df['data2'].str.extract(r'phase(\d+)')[0]]

最终输出的result和期望结果完全一致:

data1              data2
0  overall_phase1_b3  overall_phase1_b5
2  overall_phase3_b3  overall_phase3_b5

如果你的phase编号不是纯数字(比如带字母后缀),只需要调整对应正则的捕获规则即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:06:21