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

