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

如何在Pandas中删除NaN值但保留列?实现指定数据转换

Pandas 合并含NaN的DataFrame为单行非NaN值

问题场景

原DataFrame:

A    B    C
0  0.0  NaN  NaN
1  NaN  1.0  NaN
2  NaN  NaN  2.0

目标格式(保留所有列,仅保留每列的非NaN值合并为一行):

A  B  C
0  0  1  2

解决方案

有几种简洁的方法可以实现:

方法1:通用型(支持任意数据类型)

对每列提取第一个非NaN值,再转成DataFrame:

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame({
    'A': [0, np.nan, np.nan],
    'B': [np.nan, 1, np.nan],
    'C': [np.nan, np.nan, 2]
})

result = df.agg(lambda x: x.dropna().iloc[0]).to_frame().T

方法2:数值型列专用

如果你的列都是数值类型,直接用max()或sum()(NaN会被自动忽略):

result = df.max().to_frame().T
# 或者用sum(),结果一致
# result = df.sum().to_frame().T

方法3:填充法

先向前填充再向后填充,确保所有行都得到有效数值,再取第一行:

result = df.ffill().bfill().head(1)

说明

  • 方法1兼容性最强,不管列是数值、字符串还是其他类型都能正常提取非NaN值;
  • 方法2代码最简洁,但仅适合数值型数据;
  • 方法3适合每列至少存在一个非NaN值的场景,填充后取首行即可得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:52:28