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

如何在Pandas中将每行唯一值填充至最右侧列

解决方案:提取每行唯一有效值到指定列

假设你的DataFrame每行仅包含一个非NaN有效值,列数不确定,想要将每行的有效值统一放到最右侧列(或生成仅保留最右侧列名的结果),可以用以下几种简洁方法实现:

方法一:利用bfill按行填充

bfill(axis=1)会按行从右往左填充NaN值,最后取最右侧一列即可:

import pandas as pd
import io

temp = """
col1,col2,col3
nan,nan,3
nan,4,nan
1,nan,nan
"""

data = pd.read_csv(io.StringIO(temp), sep=",")

# 提取每行有效值到最右侧列
data2 = data.bfill(axis=1).iloc[:, [-1]]
print(data2)

输出结果:

col3
0   3.0
1   4.0
2   1.0

方法二:利用stack堆叠非空值

stack()会自动过滤NaN值,之后重置索引提取对应值,再转为DataFrame并指定列名:

data2 = pd.DataFrame(data.stack().reset_index(level=1, drop=True), columns=[data.columns[-1]])
print(data2)

这个方法适合需要处理更复杂索引的场景,同样能得到目标结果。

方法说明

  • 方法一的bfill(axis=1):按行方向从右到左填充,把每行的有效值覆盖到右侧列,最后取最后一列即可,执行效率较高。
  • 方法二的stack():将列索引转为行索引的层级,只保留非NaN值,之后通过重置索引去掉多余层级,重新组织成目标列名的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:02:33