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

如何将Pandas表格每行转为列表并添加为新列?

解决Pandas每行转为列表并作为新列的问题

首先,你的需求是把DataFrame的每一行转换成列表,并添加为一个新列——其实你的代码本质上是完全正确的,我们来实际验证一下:

验证你的代码

运行你提供的代码片段:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)))
df['list'] = df.apply(lambda x: x.tolist(), axis=1)
print(df)

你会得到类似这样的输出(因为是随机生成的数值,具体数字会有差异):

0  1  2  3  4                list
0  5  9  7  1  5  [5, 9, 7, 1, 5]
1  3  5  0  6  0  [3, 5, 0, 6, 0]
2  8  0  7  3  2  [8, 0, 7, 3, 2]
3  7  7  2  9  3  [7, 7, 2, 9, 3]
4  7  7  8  8  1  [7, 7, 8, 8, 1]

这完全匹配你期望的输出格式:新列里每行都是对应行的数值列表。

如果你运行代码没得到预期结果,可能的原因及解决办法

如果实际运行时没有成功,大概率是以下几种情况:

  • Pandas版本过旧:某些非常早期的Pandas版本对apply结合axis=1处理行的逻辑支持有问题,建议升级到最新稳定版:
    pip install --upgrade pandas
    
  • 列名冲突:如果你的原始DataFrame已经存在名为list的列,新列会直接覆盖原有数据,建议换个更明确的列名比如row_list:
    df['row_list'] = df.apply(lambda x: x.tolist(), axis=1)
    
  • 数据包含特殊类型:如果你的数据里有字符串、空值(NaN)等非整数类型,tolist()依然可以正常工作,但列表会保留原始数据类型,比如空值会显示为nan,字符串会原样保留。

大数据量下的高效替代方案

如果你的DataFrame数据量很大,apply的效率可能不够理想,你可以用更高效的to_numpy()结合列表推导式实现:

df['row_list'] = [row.tolist() for row in df.to_numpy()]

这种方法在处理十万级以上数据时,速度会比apply快不少。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:54:37