gpt4 book ai didi

python - 使用基于现有行值的条件在 Pandas 中创建新列并返回另一行的值

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:51 24 4
gpt4 key购买 nike

需要一些帮助来解决以下问题。我目前有一个包含 3 列的 Pandas 数据框 - test1、test2、test3

我希望实现的是result_column中的结果,其中的逻辑是:

1) 如果test1中的值AND test2 > 0,则返回test3的值

2) Else If value test1 AND test2 < 0, then return NEGATIVE value of test3

3) 否则返回0

  test1  test2  test3  result_column
0 0.5 0.1 1.25 1.25
1 0.2 -0.2 0.22 0
2 -0.3 -0.2 1.12 -1.12
3 0.4 -0.3 0.34 0
4 0.5 0 0.45 0

这是我第一次发布关于 python 和 pandas 的问题。如果此处的格式不是最佳格式,请提前致歉。感谢我能得到的任何帮助!

最佳答案

我认为需要numpy.select使用由 & (AND) 链接的条件或按子集 [[]] 选择所有测试列,通过 DataFrame.all 比较 ant 测试:

m1 = (df.test1 > 0) & (df.test2 > 0)
#alternative
#m1 = (df[['test1', 'test2']] > 0).all(axis=1)

m2 = (df.test1 < 0) & (df.test2 < 0)
#alternative
#m2 = (df[['test1', 'test2']] < 0).all(axis=1)

df['result_column'] = np.select([m1,m2], [df.test3, -df.test3], default=0)
print (df)
test1 test2 test3 result_column
0 0.5 0.1 1.25 1.25
1 0.2 -0.2 0.22 0.00
2 -0.3 -0.2 1.12 -1.12
3 0.4 -0.3 0.34 0.00
4 0.5 0.0 0.45 0.00

关于python - 使用基于现有行值的条件在 Pandas 中创建新列并返回另一行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49293469/

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