gpt4 book ai didi

python - 根据 if-elif-else 条件创建新列

转载 作者:IT老高 更新时间:2023-10-28 20:36:07 26 4
gpt4 key购买 nike

我有一个数据框 df :

    A    B
a 2 2
b 3 1
c 1 3

我想根据以下条件创建一个新列:

如果行 A == B: 0

如果行 A > B: 1

如果行 A < B: -1

所以给定上表,应该是:

    A    B    C
a 2 2 0
b 3 1 1
c 1 3 -1

对于典型 if else我做的案例np.where(df.A > df.B, 1, -1) ,pandas 是否提供了一种特殊的语法来一步解决我的问题(无需创建 3 个新列然后组合结果)?

最佳答案

将上面列出的一些方法形式化:

创建一个对数据框的行进行操作的函数,如下所示:

def f(row):
if row['A'] == row['B']:
val = 0
elif row['A'] > row['B']:
val = 1
else:
val = -1
return val

然后将其应用到通过 axis=1 选项传递的数据框:

In [1]: df['C'] = df.apply(f, axis=1)

In [2]: df
Out[2]:
A B C
a 2 2 0
b 3 1 1
c 1 3 -1

当然,这不是矢量化的,因此在扩展到大量记录时性能可能不会那么好。不过,我认为它更具可读性。尤其是来自 SAS 背景。

编辑

这里是矢量化版本

df['C'] = np.where(
df['A'] == df['B'], 0, np.where(
df['A'] > df['B'], 1, -1))

关于python - 根据 if-elif-else 条件创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702342/

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