我有一个带有“状态”列的数据框,其值: 真的, 错误的, 错误的, 真的, 正确
我想找到 False 的最后一个位置并获取仅包含最后两个值的数据帧。
import pandas as pd
# dataframe as you described
df = pd.DataFrame({
'status' : [True, False, False, True, True]
})
# get the row number of the last False (credit to mozway for index idea)
last_false = df.index[~df['status']].max()
# get every row after the last false
df.loc[last_false+1:]
# or just getting the last two rows
df.tail(2)
与
Series.mask
+ Series.last_valid_index
:
df.iloc[df['status'].mask(df['status']).last_valid_index() + 1:]
status
3 True
4 True
使用
index
的另一个选项
import pandas as pd
data = {
"status": [True, False, False, True, True]
}
df = pd.DataFrame(data)
val = df[df['status'] == False].index[-1]
df_final = df.iloc[val+1:,:]
print(df_final)
status
3 True
4 True