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

Pandas技术问题:如何用对应列名填充数据表中的非空值

使用Pandas将数据表非空值替换为对应列名

没问题,我来帮你实现这个需求!下面是具体的步骤和代码示例,亲测有效~

需求说明

假设我们有这样一份原始数据表:

A    B    C
0  1.0  NaN  3.0
1  NaN  5.0  NaN
2  7.0  8.0  9.0

我们需要把所有非空值替换成它所在列的列名,最终得到这样的结果:

A    B    C
0    A  NaN    C
1  NaN    B  NaN
2    A    B    C

代码实现

这里提供两种高效的实现方式,你可以根据习惯选择:

方法1:使用where方法(推荐,性能更优)

where方法可以根据布尔条件选择性替换值,非常适合这个场景:

import pandas as pd
import numpy as np

# 1. 创建示例数据表(你可以替换成自己的数据源)
df = pd.DataFrame({
    'A': [1, np.nan, 7],
    'B': [np.nan, 5, 8],
    'C': [3, np.nan, 9]
})

# 2. 核心处理逻辑:非空值替换为列名,空值保留NaN
df_result = df.where(df.isna(), df.columns, axis=1)

# 3. 查看结果
print("原始数据表:")
print(df)
print("\n处理后的数据表:")
print(df_result)

方法2:使用apply遍历列

如果你更喜欢直观的遍历方式,也可以用apply对每一列单独处理:

# 核心处理逻辑
df_result = df.apply(lambda col: col.where(col.isna(), col.name))

特殊情况处理

如果你的数据表中存在空字符串(不是NaN),需要把空字符串也当作“空值”保留的话,可以修改条件:

# 把空字符串和NaN都视为需要保留的空值
df_result = df.where(df.isna() | df.eq(''), df.columns, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:18:31