gpt4 book ai didi

python-3.x - Pandas 从两列之一中选择首选值来创建一个新列

转载 作者:行者123 更新时间:2023-12-05 02:10:10 28 4
gpt4 key购买 nike

我有一个包含两列“互补”数据的 Pandas DataFrame。对于任何给定的行,有 3 种可能性:

1) A 列有一个非空值,B 列有一个空值 NaN,我想将其替换为来自A 列。
2) A 列有一个空值 NaN,我想用 B 列中的非空值替换它。
3) AB 列都有空值,NaN,这意味着我将保留 NaN 作为该行的值。

这是我的 DataFrame 的简化版本:

df1 = pd.DataFrame({'A' : ['keep1', np.nan, np.nan, 'keep4', np.nan], 
'B' : [np.nan, 'keep2', np.nan, np.nan, np.nan]})

我想作为一个中间步骤,我会创建一个新列C,其中包含我需要的条目:

df2 = pd.DataFrame({'A' : ['keep1', np.nan, np.nan, 'keep4', np.nan], 
'B' : [np.nan, 'keep2', np.nan, np.nan, np.nan],
'C' : ['keep1', 'keep2', np.nan, 'keep4', np.nan]}

然后我将删除前两行 AB:

df_final = df2.drop(['A', 'B'], axis=1)

我实际的 DataFrame 有数百行,我尝试了几种方法( bool 过滤器、使用 iterrows 循环遍历 DataFrame、使用 DataFrame.where())没有成功。我认为这将是一个简单的问题,但我没有看到。感谢您的帮助。

谢谢

最佳答案

您可以使用 combine_first() 从 B 填补 A 中的空白:

df1['C'] = df1['A'].combine_first(df1['B'])
#0 keep1
#1 keep2
#2 NaN
#3 keep4
#4 NaN

关于python-3.x - Pandas 从两列之一中选择首选值来创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59133159/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com