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

如何将不同长度列表构造为指定格式的Pandas DataFrame

解决DataFrame列非空值重组问题

先明确你的原始数据和需求:
你有三个列表:

A = ['one', None, None, None]
B = [None, 'two', None, None]
C = [None, None, 'three', 'Four']

用它们构造出的原始DataFrame是:

A     B       C
0  one  None    None
1 None  two    None
2 None  None  three
3 None  None   Four

想要把它转换成每行对应各列的非空值、缺失位置补None的形式:

A     B       C
0  one  two    three
1 None None   Four

实现方法

核心思路就是提取每一列的非空值,再重新对齐组合成新的DataFrame,这里有个简单直观的实现方式:

import pandas as pd

# 原始数据
A = ['one', None, None, None]
B = [None, 'two', None, None]
C = [None, None, 'three', 'Four']

# 构造原始DataFrame
df = pd.DataFrame({'A': A, 'B': B, 'C': C})

# 提取每列非空值并重置索引,再组合成新DataFrame
processed_cols = {col: df[col].dropna().reset_index(drop=True) for col in df.columns}
result_df = pd.DataFrame(processed_cols)

# 将NaN替换为None(匹配你期望的格式)
result_df = result_df.where(pd.notnull(result_df), None)

print(result_df)

代码解释

  • df[col].dropna():去掉当前列的所有空值(包括None和NaN)
  • reset_index(drop=True):把提取后的非空值重新从0开始排序索引,确保各列的非空值能按顺序对齐
  • 用字典推导式处理所有列后传入pd.DataFrame(),pandas会自动为长度不足的列填充NaN
  • 最后用where方法把NaN替换为None,完全匹配你想要的输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:33:16