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
相关产品推荐
相关产品推荐

