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

如何用Pandas实现DataFrame按列非空优先级取值生成新列

实现步骤

  1. 首先确保你的空值已被Pandas识别为NaN,如果原始数据中空值是空白字符串,可以先做统一替换:
import pandas as pd
import numpy as np

# 读取数据时自动跳过值前面的多余空格
df = pd.read_csv("你的文件路径.csv", skipinitialspace=True)
# 如果空值是空白字符串,先替换为NaN
df = df.replace(r'^\s*$', np.nan, regex=True)
  1. 按规则生成目标列,直接使用fillna方法即可实现优先级取值:
# col_a2非空取col_a2,否则取col_a1
df["Column A"] = df["col_a2"].fillna(df["col_a1"])
# col_b1非空取col_b1,否则取col_b2
df["Column B"] = df["col_b1"].fillna(df["col_b2"])

# 提取仅需要的两列得到最终结果
result = df[["Column A", "Column B"]]

备选写法

你也可以用np.where实现相同逻辑,可读性更强:

df["Column A"] = np.where(df["col_a2"].notna(), df["col_a2"], df["col_a1"])
df["Column B"] = np.where(df["col_b1"].notna(), df["col_b1"], df["col_b2"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:39:02