这是我的DataFrame:
import pandas as pd
df = pd.DataFrame(
{
'a': [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70],
'b': [1, 1, 1, -1, -1, -2, -1, 2, 2, -2, -2, 1, -2],
}
)
面具是:
mask = (
(df.b == -2) &
(df.b.shift(1) > 0)
)
预期输出:将df
切片到mask
的第一个实例:
a b
0 10 1
1 15 1
2 20 1
3 25 -1
4 30 -1
5 35 -2
6 40 -1
7 45 2
8 50 2
掩码的第一个实例位于行9
处.所以我想把df
分割成这个索引.
这就是我try 过的.这是可行的,但我不确定这是否是最好的方法:
idx = df.loc[mask.cumsum().eq(1) & mask].index[0]
result = df.iloc[:idx]