如何使用pandas删除dataframe特定单元格NaN值并合并为单行数据
实现方法
你可以通过pandas的聚合操作直接提取每列的非空有效值,再重构为单行DataFrame即可,两种常用实现方式如下:
- 方法1:使用
first聚合(最优,代码最短性能最高)
每列仅存在1个有效值的场景下,直接对全表按列取第一个非空值,再转置为单行结构:
import pandas as pd import numpy as np # 构造示例数据(实际使用时替换为自己的df即可) df = pd.DataFrame({ 't': ['a', np.nan, np.nan], 'c': [np.nan, 'b', np.nan], 'i': [np.nan, np.nan, 'c'] }) # 核心处理代码 result = df.agg('first').to_frame().T
- 方法2:手动对每列删空取值(适合列存在多个非空值、需自定义取值规则的场景)
如果需要自定义每列的取值逻辑(比如取最后一个有效值),可以逐列处理后再拼接:
# 取每列第一个非空值,转置为单行 result = df.apply(lambda col: col.dropna().iloc[0]).to_frame().T
两种方法输出的result都符合你要求的结构:
| 索引 | t | c | i |
|---|---|---|---|
| 0 | 'a' | 'b' | 'c' |
内容的提问来源于stack exchange,提问作者user3318064
相关产品推荐
相关产品推荐

