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

如何将无表头CSV文件对应的DataFrame中所有列合并为一个列表

如何将无表头CSV的DataFrame所有列合并为一维列表

嘿,我来帮你搞定这个问题!你已经走对了第一步——用header=None读取无表头CSV,但你的循环写法会把每一列的Series对象加到列表里,而不是你想要的扁平化数值列表。下面给你几种简洁高效的实现方式:

按列优先合并(先第一列所有值,再第二列,以此类推)

如果你的目标是得到类似[1,3,5,2,4,6,7,8,9]这样的顺序(对应你伪代码的逻辑),可以试试这两种方法:

方法1:用stack()快速扁平化

import pandas as pd

df = pd.read_csv('file.csv', header=None)
data = df.stack().tolist()

stack()会把DataFrame的列“堆叠”成一维Series,再用tolist()转成普通列表就行,一步到位。

方法2:用melt()提取值列

data = df.melt()['value'].tolist()

melt()会把所有列合并成一个名为value的列,直接提取这个列转列表就搞定了。

按行优先合并(按行顺序展开所有值)

如果你的实际需求是按行的顺序把所有值连起来(比如得到[1,2,7,3,4,8,5,6,9]),可以用更直接的数组扁平化方法:

方法1:values.flatten()

data = df.values.flatten().tolist()

df.values会把DataFrame转成numpy数组,flatten()直接把数组压成一维,再转成列表。

方法2:values.ravel()

data = df.values.ravel().tolist()

ravel()和flatten()效果类似,都是把多维数组转成一维,用法更简洁。

如果你想保留循环的写法

要是你还是想用循环来实现,只需要把append改成extend,并把列转成列表:

data = []
# 用df.shape[1]获取列数,不用硬编码
for col_idx in range(df.shape[1]):
    data.extend(df[col_idx].tolist())

这样就会把每一列的数值逐个加到data里,而不是把整个Series对象加进去。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:42:31