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

如何将pandas.DataFrame转换为二维数组?(pytest场景)

问题与解决方案

问题描述

通过代码tests = pd.read_csv('tsur.tsv', sep='\t')读取得到如下DataFrame:

query  match
0                                        jordan belfort  False
1       Ricardo Jalone Bob FRANK\n\n1\nLondon Markus  False
2                                        USA Maria JOHN  False

需要将其转换为如下格式的元组列表:

[('jordan belfort', False), ('Ricardo Jalone Bob FRANK\n\n1\nLondon Markus', False), ('USA Maria JOHN', False)]

并将该列表集成到pytest的fixture中。

实现步骤

1. DataFrame转换为目标格式

利用pandas的itertuples()方法可直接将每行数据转换为元组,再转为列表:

import pandas as pd

def load_test_data():
    df = pd.read_csv('tsur.tsv', sep='\t')
    # index=False 排除默认行索引,只保留query和match列内容
    return list(df.itertuples(index=False, name=None))

调用该函数即可得到所需的元组列表。

2. 定义pytest fixture

在测试文件(或conftest.py中,方便全局复用)中定义fixture:

import pytest
import pandas as pd

@pytest.fixture
def test_data():
    df = pd.read_csv('tsur.tsv', sep='\t')
    return list(df.itertuples(index=False, name=None))

3. 在测试用例中使用fixture

直接在测试函数参数中传入fixture名称即可调用:

def test_something(test_data):
    # 遍历测试数据执行逻辑
    for query, expected_match in test_data:
        result = your_test_function(query)
        assert result == expected_match

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:48:09