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

Pandas:基于条件从其他列取值创建新列

合并两列非NaN值生成新列的解决方案

你需要优先取col1的非NaN值,col1为NaN时取col2的非NaN值,两者都为NaN则保留NaN,用Pandas可以通过两种简单方法实现:

方法1:使用combine_first

这个方法会用右侧列的非NaN值填充左侧列的NaN值,完全匹配你的需求:

import pandas as pd
import numpy as np

test_df = pd.DataFrame({
    'col1':['a','b','c',np.nan,np.nan],
    'col2':[np.nan,'b','c','d',np.nan]
})

# 生成col3
test_df['col3'] = test_df['col1'].combine_first(test_df['col2'])
print(test_df)

输出结果:

col1 col2 col3
0    a  NaN    a
1    b    b    b
2    c    c    c
3  NaN    d    d
4  NaN    NaN  NaN

方法2:使用fillna

直接用col2填充col1中的NaN值,同样能得到目标结果:

test_df['col3'] = test_df['col1'].fillna(test_df['col2'])

这两种方法在你的场景下效果完全一致,选择任意一种即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:50:22