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

如何将Pandas DataFrame的多列数据合并为一个列表?

嘿,这个问题我熟!你想要把DataFrame的多列数据转成列表,而不是只拿到列名,对吧?我给你几个高效的解决方法,结合你的场景来演示:

核心思路

你之前用list(df.columns)[0:8]拿到的只是列名的列表,要获取列数据,得先选中目标列(得到一个子DataFrame),再把这个子DataFrame转成列表。

具体方法

假设你的DataFrame是:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10000, 7), columns=list('ABCDEFG'))

1. 按位置快速选多列(高效适合列数多的情况)

如果要选前N列(比如前4列A-D),用iloc按位置切片,再转成列表:

# 选中前4列(索引0到3,左闭右开)
selected_df = df.iloc[:, 0:4]
# 转成二维列表(每个子列表对应一行的多列值)
df1 = selected_df.to_numpy().tolist()
# 或者用values属性(兼容旧版pandas)
df1 = selected_df.values.tolist()

注:to_numpy()是pandas 0.24+推荐的方法,比values更清晰。

2. 按列名选指定多列(适合选不连续列)

如果要选特定列(比如B、D、F),直接传入列名列表:

selected_df = df[['B', 'D', 'F']]
df2 = selected_df.to_numpy().tolist()

如果是连续列名(比如A到E),也可以用loc切片:

selected_df = df.loc[:, 'A':'E']
df3 = selected_df.to_numpy().tolist()

3. 把多列数据扁平化(转成一维列表)

如果想把多列的所有数据按顺序拼成一个一维列表,用flatten():

# 选中C-E列,转成一维列表
flat_list = df.iloc[:, 2:5].values.flatten().tolist()

为什么之前的方法不行?

list(df.columns)[0:8]操作的是列名索引,所以只能得到列名的列表;而我们需要操作的是数据本身,必须先通过iloc/loc/列名列表选中目标列,再转成列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:56:45