我有一个如下数据框。
\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
答案 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