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

如何使用Pandas将含NaN的多行DataFrame转换为单行DataFrame

Pandas合并多行含NaN的DataFrame为单行

针对你给出的DataFrame结构,有两种简单的方法可以实现转换:

方法1:按索引分组取最大值

利用groupby按索引分组后,调用max()方法——该方法会自动忽略NaN值,保留每组内各列的非空值:

import pandas as pd
import numpy as np

# 构造原始数据
df = pd.DataFrame(
    {
        'a': [1, np.nan, np.nan, np.nan],
        'b': [1, np.nan, np.nan, np.nan],
        'c': [np.nan, 2, np.nan, np.nan],
        'd': [np.nan, 2, np.nan, np.nan],
        'e': [np.nan, np.nan, 3, np.nan],
        'f': [np.nan, np.nan, 3, np.nan],
        'g': [np.nan, np.nan, np.nan, 4],
        'h': [np.nan, np.nan, np.nan, 4]
    },
    index=['o', 'o', 'o', 'o']
)

# 执行转换
result = df.groupby(df.index).max()
print(result)

方法2:填充空值后取单行

通过ffill()(前向填充)和bfill()(后向填充)将所有NaN补全,再取最后一行即可得到目标单行DataFrame:

result = df.ffill().bfill().iloc[-1:]
print(result)

为什么numpy diagonal方法不适用?

你的数据中,每行的非空值是连续的两列(比如第一行是a、b列,第二行是c、d列),并非矩阵的对角线位置,所以numpy.diagonal()无法提取到需要的数值,自然无法实现转换。

内容的提问来源于stack exchange,提问作者박진호

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:16:23