基于另一列的熊猫条件转移

时间:2020-04-04 19:33:52

标签: python python-3.x pandas

我有一个简单的人与价值数据框。我想添加一个返回用户下一个值的列。使用shift(-1)可以很容易地做到这一点,但是我希望如果此人更改,则新列为空值。我可以遍历行,但这似乎是一个缓慢的选择。

原始数据框:

import pandas as pd
df = pd.DataFrame(data=[['A', 1], ['A', 4],
                        ['B', 1], ['B', 4]], 
                  columns=['person', 'val'])

    person  val
0   A       1
1   A       4
2   B       1
3   B       4

所需的输出:

    person  val conditional shift
0   A       1   4.0
1   A       4   NaN
2   B       1   6.0
3   B       6   NaN

1 个答案:

答案 0 :(得分:1)

看起来像你想要的GroupBy.shift

df['conditional shift'] = df.groupby('person').val.shift(-1)

print(df)

  person  val  conditional shift
0      A    1                4.0
1      A    4                NaN
2      B    1                6.0
3      B    6                NaN