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

如何将DataFrame的值转换为按行遍历的一维列表?

嗨,我来帮你搞定这个需求!要把DataFrame里的所有数据按行依次存入列表L,有几种实用的方法,我给你拆解清楚:

方法1:用iterrows()逐行遍历(直观易懂)

iterrows()会返回每一行的索引和对应的行数据,非常适合刚接触pandas的朋友理解。你可以嵌套遍历,把每一行的元素逐个追加到列表里:

import pandas as pd

# 先模拟一个示例DataFrame(你替换成自己的即可)
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
L = []

# 逐行遍历,下划线用来接收不需要的行索引
for _, row in df.iterrows():
    # 遍历当前行的每个元素,追加到L
    for item in row:
        L.append(item)

print(L)  # 输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

不过要注意,如果你的DataFrame数据量很大,这种方法的效率会稍低,因为它是纯Python层面的循环。

方法2:用to_numpy()+扁平化操作(高效推荐)

如果你的数据规模比较大,强烈推荐这种一行搞定的高效方案:先把DataFrame转成numpy数组,再扁平化(把二维数组转成一维),最后转成列表:

L = df.to_numpy().flatten().tolist()

这种方法依赖numpy的向量化操作,速度比iterrows()快很多,处理大数据集时优势明显。

方法3:用itertuples()遍历(兼顾效率和可读性)

itertuples()会返回每行数据的命名元组,遍历速度比iterrows()快不少,同时可读性也不错:

L = []
# index=False表示不返回行索引,只返回行数据元组
for row in df.itertuples(index=False):
    # 用extend直接把元组里的所有元素批量加到列表
    L.extend(row)

extend()可以一次性把元组的所有元素追加到列表,比逐个append更简洁高效。

另外小提醒:如果你的DataFrame里存在缺失值(比如NaN),以上方法都会把NaN保留在列表里。如果需要处理缺失值,可以先对DataFrame做填充,比如df.fillna(0)把缺失值换成0,再执行上述操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:06:59