根据另一列的三个条件设置一列的值

时间:2018-02-16 15:36:55

标签: python pandas dataframe

我有一个包含2列的ab的DataFrame,我想基于以下三个条件填充第三列c

  • 如果a.diff() > 0c = b.shift() + b
  • elif a.diff() < 0然后c = b.shift() - b
  • elif a.diff() == 0然后c = b.shift()

什么是Pythonic,单行方式?

示例:

     a    b    c    
0    2   10  Nan
1    3   16   26
2    1   12    4
3    1   18   12
4    3   11   29
5    1   13   -2

1 个答案:

答案 0 :(得分:2)

使用numpy.select并缓存shift ed和diff ed Series,以获得更好的效果和可读性:

diff = df.a.diff()
shifted = df.b.shift()

df['c'] = np.select([diff > 0, diff < 0], [shifted + df.b, shifted - df.b], default=shifted)
print (df)
   a   b     c
0  2  10   NaN
1  3  16  26.0
2  1  12   4.0
3  1  18  12.0
4  3  11  29.0
5  1  13  -2.0
相关问题