我有一个熊猫数据帧df
:
汽车 | 打开 | 时间 | |
---|---|---|---|
奥迪A5 | 0 | <1>||
奥迪A5 | |||
奥迪A5 | 1 | 3 | |
奥迪A5 | |||
奥迪A5 | 0 | 5 | |
奥迪A5 | 0 | 6 | |
奥迪A5 | 0 | 7 | |
奥迪A5 | |||
奥迪A5 | |||
梅赛德斯A级 | 1 | 0 | |
梅赛德斯A级 | 1 | 1 | |
梅赛德斯A级 | 1 | 2 | |
梅赛德斯A级 | 0 | 3 | |
梅赛德斯A级 | 0 | 4 | |
梅赛德斯A级 | 1 | 5 | |
梅赛德斯A级 | 1 | 6 | |
梅赛德斯A级 | 0 | 7 | |
梅赛德斯A级 | 0 | 8 | |
梅赛德斯A级 | 1 | 9 |
IIUC,在屏蔽非1值后,您可以为每组bfill
设置一个限制:
n=1
df['Open2'] = (df['Open']
.where(df['Open'].eq(1))
.groupby(df['Car']).bfill(limit=n)
.fillna(df['Open'], downcast='infer')
)
输出(为了清楚起见,作为新列"Open2"(:
Car Time Open Open2
0 Audi A5 0 0 0
1 Audi A5 1 0 0
2 Audi A5 2 0 1
3 Audi A5 3 1 1
4 Audi A5 4 1 1
5 Audi A5 5 0 0
6 Audi A5 6 0 0
7 Audi A5 7 0 1
8 Audi A5 8 1 1
9 Audi A5 9 1 1
10 Mercedes Class A 0 1 1
11 Mercedes Class A 1 1 1
12 Mercedes Class A 2 1 1
13 Mercedes Class A 3 0 0
14 Mercedes Class A 4 0 1
15 Mercedes Class A 5 1 1
16 Mercedes Class A 6 1 1
17 Mercedes Class A 7 0 0
18 Mercedes Class A 8 0 1
19 Mercedes Class A 9 1 1