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

如何从不同长度列表生成带NaN填充的pd.DataFrame?

解决不同长度列表转对齐DataFrame的方法

这问题我日常处理数据时碰到过好多次,其实有几种简洁的实现方式,给你分享三个常用的:

方法1:利用pd.DataFrame.from_dict自动补全

Pandas的from_dict方法配合orient='index'可以自动把不同长度的列表转成对齐的列,短列表末尾会自动填充NaN:

import pandas as pd

a = [1,2,3]
b = [2,3]

# 用字典传入数据,转置后得到目标结构
df = pd.DataFrame.from_dict({'a': a, 'b': b}, orient='index').T

方法2:转成Series后合并(最直观)

把每个列表单独转成pd.Series,然后用pd.concat按列合并,Series会自动补全NaN到最长长度:

import pandas as pd

a = [1,2,3]
b = [2,3]

# 给每个Series指定列名
s_a = pd.Series(a, name='a')
s_b = pd.Series(b, name='b')

# 按列合并
df = pd.concat([s_a, s_b], axis=1)

我个人最常用这个方法,逻辑清晰,后续要加更多列表也很方便。

方法3:手动补全列表长度(自定义性强)

如果需要手动控制填充值(比如不用NaN而是其他默认值),可以先计算最长列表的长度,再给短列表补全:

import pandas as pd

a = [1,2,3]
b = [2,3]

# 获取最长列表的长度
max_length = max(len(a), len(b))

# 给短列表补全到最长长度,这里用pd.NA(和NaN等价但更规范)
a_padded = a + [pd.NA] * (max_length - len(a))
b_padded = b + [pd.NA] * (max_length - len(b))

# 创建DataFrame
df = pd.DataFrame({'a': a_padded, 'b': b_padded})

执行后得到的结果就是你想要的对齐结构:

a    b
0  1  2.0
1  2  3.0
2  3  NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:32:52