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

如何为Pandas DataFrame生成符合要求的嵌套列表列C?

解决DataFrame生成嵌套列表列的问题

我明白你的问题了——你想要把每行的A和B值分别包裹成单个元素的列表,再组合成一个外层列表,但之前的代码把整行的两个值放到了同一个子列表里。咱们来修正这个问题:

问题根源

你之前用的代码:

df['C'] = [[x] for x in df[['A', 'B']].values.tolist()]

这里df[['A', 'B']].values.tolist()会把每行转换成[A值, B值]的列表,再用[[x]]包裹后,就变成了[[A值, B值]],这和你需要的[[A值], [B值]]结构不符。

解决方案

下面提供几种简单有效的方法:

方法1:使用zip遍历列值(推荐,效率较高)

直接遍历A和B列的每个值,分别包裹成子列表后再组合:

import pandas as pd

# 先创建示例DataFrame
df = pd.DataFrame({'A': [2.3, 5.6, 8.2], 'B': [6.4, 2.8, 9.0]})

# 生成列C
df['C'] = [[[a], [b]] for a, b in zip(df['A'], df['B'])]

方法2:使用apply逐行处理

利用apply函数对每行进行自定义转换:

df['C'] = df.apply(lambda row: [[row['A']], [row['B']]], axis=1)

方法3:遍历values二维数组

如果习惯操作values数组,可以对每行的每个元素单独包裹:

df['C'] = [[[val] for val in row] for row in df[['A', 'B']].values]

验证结果

执行上述任意一种方法后,你的DataFrame会变成预期的格式:

A    B             C
0  2.3  6.4  [[2.3], [6.4]]
1  5.6  2.8  [[5.6], [2.8]]
2  8.2  9.0  [[8.2], [9.0]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:32