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

Pandas匹配长度不一致的两列值 提取指定测试项对应结果

实现思路

每行的测试项与结果值按换行符一一对应,直接对每行做匹配取值即可,无需冗余循环,核心逻辑是找到a在测试项列表中的索引,取结果列表相同位置的数值。

完整实现代码

import pandas as pd

# 构造示例数据
df = pd.DataFrame({'Tests':['a\nb\nc', 'b\nc\na'], 'Results':['1.2\n3.4\n4', '2.3\n1\n1']})

# 提取a对应的结果,可根据需求修改匹配的测试项名称
df['a result'] = df.apply(
    lambda row: row['Results'].split('\n')[row['Tests'].split('\n').index('a')], 
    axis=1
)

# 如有部分行不含测试项a,可加判断避免报错,写法如下:
# df['a result'] = df.apply(
#     lambda row: row['Results'].split('\n')[row['Tests'].split('\n').index('a')] if 'a' in row['Tests'] else None, 
#     axis=1
# )

print(df)

输出结果

Tests      Results a result
0  a\nb\nc  1.2\n3.4\n4      1.2
1  b\nc\na    2.3\n1\n1        1

原有代码的问题说明

  • for row in df默认遍历的是DataFrame的列名,不是行数据,遍历行需要用df.iterrows()等方法
  • 直接判断tests[0] == 'a'是对整列做批量比较,返回的是布尔值序列,不能直接用if做单值判断
  • 逐列判断位置的写法扩展性差,后续要取其他测试项结果要修改大量逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:57:03