gpt4 book ai didi

python - 如何使用if语句为python中的新列赋值?

转载 作者:行者123 更新时间:2023-11-28 18:31:03 27 4
gpt4 key购买 nike

我的数据框中有两列,我需要基于它们创建一个新列。例如:

df = pd.DataFrame(data={'a':[1.0,1.0,2.0], 'b':[3.0,3.0,3.0]})

df.iloc[1,0]=np.nan

a b
0 1.0 3.0
1 NaN 3.0
2 2.0 3.0

我需要添加一个列 c,当它不为 null 时,它从 a 中获取值,否则从 b 中获取值。喜欢:

a    b    c
0 1.0 3.0 1.0
1 NaN 3.0 3.0
2 2.0 3.0 2.0

这是我尝试过的:

def dist(df):
if df['a']:
return df.a
else:
return df.b
df['c']=df.apply(dist,axis=1)

但结果不是我所期望的。谁能建议我应该做什么?谢谢!

最佳答案

>>> d['c'] = df.a.where(~np.isnan(df.a), df.b)
>>> df
a b c
0 1 3 1
1 NaN 3 3
2 2 3 2

编写更紧凑的代码很诱人:

df['c'] = df.a.where(df.a, df.b)

但这不会为 df.a[k] == 0 做正确的事情(也被解释为 False)。

您可以使用 NaN 的属性代替 isnan,因为它是唯一不等于自身的值,因此以下内容也有效:

df['c'] = df.a.where(df.a==df.a, df.b)

关于python - 如何使用if语句为python中的新列赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313271/

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