熊猫滚动获得最后的真实价值

时间:2018-07-29 03:31:26

标签: python pandas dataframe

我有一个如下数据框。

\u

我想在col3上实现一个说3的滚动窗口,找到最后一个True值,并为该行返回col1值。如果找不到真值,它将采用滚动col1的第一个元素。以下数据在col3上的输出已移位。

预期输出:

import pandas as pd
d = {'col1': ['a', 'b', 'c', 'd', 'e', 'f'], 'col2': [False, False, True, False, True, False]}
df = pd.DataFrame(data=d)
print df

   col1   col2
0     a  False
1     b  False
2     c   True
3     d  False
4     e   True
5     f  False

1 个答案:

答案 0 :(得分:1)

此处可能不需要滚动窗口。让我们尝试where / mask + ffill

df['col3'] = df['col1'].where(df['col2']).shift().ffill().fillna(df.at[0, 'col1'])    
df

  col1   col2 col3
0    a  False    a
1    b  False    a
2    c   True    a
3    d  False    c
4    e   True    c
5    f  False    e