gpt4 book ai didi

python - 根据多列条件返回值

转载 作者:行者123 更新时间:2023-12-04 20:50:57 25 4
gpt4 key购买 nike

我有一个包含 4 列的数据框,基本上我正在尝试使用 if 语句创建另一列并返回满足条件的值

If NR/HL1 is not equal to 0, then outputColumn(NR/HL) = NR/HL1

if NR/HL1 is equals to 0, then outputColumn(NR/HL) = NR/HL2

if NR/HL1 is equals to 0 and NR/HL2 is equal to 0, then outputColumn(NR/HL) = NR/HL3
SKU NR/HL1 NR/HL2 NR/HL3  OutputColumn(NR/HL)
123 10 20 0 10
456 0 30 20 30
567 0 0 40 40
890 10 20 50 10
我使用了下面的代码,它工作正常,但不是 100% 准确。总是错过一个或另一个条件。如果您检查输出条件 3 的图像是否满足但它返回默认值。 NR/HL3 !=0, But still NR/HL ==0
def f(AC_off_trade):
if AC_off_trade['NR/HL1'] != 0:
return AC_off_trade['NR/HL1']
if AC_off_trade['NR/HL1'] == 0:
val = AC_off_trade['NR/HL2']
if AC_off_trade['NR/HL1'] == 0 and AC_off_trade['NR/HL2'] == 0:
return AC_off_trade['NR/HL3']
else:
return 0
AC_off_trade['NR/HL'] = AC_off_trade.apply(f,axis=1)
更新代码
#defining condition
hl1_equal_0_condition = AC_off_trade["NR/HL1"]==0.0
hl2_equal_0_contition = AC_off_trade["NR/HL2"]==0.0
#default value
AC_off_trade.loc[:,"NR/HL"]=0
#setting values depending on condition
AC_off_trade.loc[~hl1_equal_0_condition, "NR/HL"] = AC_off_trade["NR/HL1"]
AC_off_trade.loc[hl1_equal_0_condition, "NR/HL"] = AC_off_trade["NR/HL2"]
AC_off_trade.loc[hl1_equal_0_condition & hl2_equal_0_contition, "NR/HL"] = AC_off_trade["NR/HL3"]
enter image description here

最佳答案

首先,您应该尽量避免使用 apply 来支持矢量化,因为性能要好得多。然后你可以使用条件来获得你想要的输出:

df = pd.DataFrame({"SKU": [123, 456, 567, 890], "NR/HL1" : [10, 0, 0, 10], "NR/HL2": [20, 30, 0, 20],"NR/HL3": [0, 20, 40, 50]})

# Defining conditions
hl1_equal_0_condition = df["NR/HL1"]==0
hl2_equal_0_contition = df["NR/HL2"]==0

# Setting the default value
df.loc[:,"NR/HL"] = 0

# Setting the values deppeding on tje conditions
df.loc[~hl1_equal_0_condition, "NR/HL"] = df["NR/HL1"]
df.loc[hl1_equal_0_condition, "NR/HL"] = df["NR/HL2"]
df.loc[hl1_equal_0_condition & hl2_equal_0_contition, "NR/HL"] = df["NR/HL3"]
输出:
    SKU NR/HL1  NR/HL2  NR/HL3  NR/HL
0 123 10 20 0 10
1 456 0 30 20 30
2 567 0 0 40 40
3 890 10 20 50 10

关于python - 根据多列条件返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62701631/

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