这是我的DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{
'a': [np.nan, np.nan, np.nan, 20, 12, 42, 33, 32, 31],
'b': [np.nan, np.nan, np.nan, np.nan, 2333, np.nan, np.nan, 12323, np.nan]
}
)
面具是:
mask = (
(df.a.notna()) &
(df.b.notna())
)
预期输出:切片df
,直到第一个实例mask
.请注意,mask
的第一行是INCLINDED:
a b
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 20.0 NaN
4 12.0 2333.0
mask
的第一个实例是第4
行.因此,将其分割到这个指数是目标.
这些都是我的try .第一个可行,但我不确定方法是否正确:
# attempt 1
idx = df.loc[mask.cumsum().eq(1) & mask].index[0]
df = df.loc[:idx]
print(df)
# attempt 2
out = df[~mask.cummax()]