这是我的DataFrame:
import pandas as pd
df = pd.DataFrame(
{
'a': [1, 1, 1, 2, 2, 2, 2, 2, -1, -1, 2, 2, 2],
}
)
预期输出:更改第a
栏:
a
0 1
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 -1
9 -1
10 2
11 2
12 2
流程如下:
a)寻找1和2的条纹
b)如果连线2在连线1之后出现,则连线2变为1.
例如:
从第3
行到第7
行有一个2的条纹.在此之前的连胜是1的连胜.所以我想把行3
到7
改为1,这是df
的预期输出.
这些是我的小伙伴:
# attempt 1
df['streak'] = df.a.ne(df.a.shift(1)).cumsum()
# attempt 2
df.loc[(df.a.eq(2)) & (df.a.shift(1).eq(1)), 'a'] = 1