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

如何对Pandas生成的表格按指定列实现数据对齐?

解决方案

要实现将每列非空值向上对齐、空值移至列尾的效果,可以通过对DataFrame的每一列重新排序元素来完成:

方法一:自定义函数处理

import pandas as pd

# 原始数据生成
df1 = pd.DataFrame({"A": ['a','b','c','d']})
df2 = pd.DataFrame({"B": ['','c','a','']})
df3 = pd.DataFrame({"C": ['','','d','']})
df = pd.concat([df1, df2, df3], axis=1)

# 定义非空值上移的函数
def shift_non_empty_up(column):
    # 提取列中的非空值
    non_empty_vals = column[column != ''].tolist()
    # 计算需要补充的空值数量
    empty_num = len(column) - len(non_empty_vals)
    # 返回重新排列后的列:非空值在前,空值在后
    return pd.Series(non_empty_vals + [''] * empty_num)

# 应用函数到所有列
df_aligned = df.apply(shift_non_empty_up, axis=0)
print(df_aligned)

方法二:简洁Lambda写法

如果不想定义单独函数,可以用一行Lambda表达式实现:

df_aligned = df.apply(lambda col: pd.Series(col[col != ''].tolist() + ['']*(len(col)-len(col[col != '']))), axis=0)

注意事项

如果你的空值是NaN而非空字符串'',只需将代码中的col != ''替换为col.notna()即可适配。

执行后得到的结果即为目标对齐效果:

A  B  C
0  a  c  d
1  b  a   
2  c      
3  d      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:52:53