df.loc[df.index.to_series().eq(particular_index)[::-1].cummax().cumsum().between(1, slice_length)]
# if `df` is MultiIndex
df.loc[df.index.to_frame().eq(particular_index).all(axis=1)[::-1].cummax().cumsum().between(1, slice_length)]
一个工作示例:
df = pd.DataFrame({'A': range(6), 'B': range(6,0,-1)}, index=[f'a{i}' for i in range(6)])
slice_length = 3
particular_index = df.iloc[4].name
df1 = df.loc[:particular_index].tail(slice_length)
2条答案
按热度按时间mv1qrgav1#
这个应该可以了
此链接有更多信息Getting the integer index of a Pandas DataFrame row fulfilling a condition?
cwxwcias2#
你可以对一个 Dataframe 进行切片,所以要选择一个范围,直到某个点,你可以切片。最简单的情况是将
df
切片到特定的索引,然后调用tail()
来获取特定的行范围。例如,要获取55个连续的行,直到特定的索引,你可以使用以下命令:对于使用单个布尔索引的更复杂的方法,可以使用
cummax()
和cumsum()
的组合,并使用between()
进行切片。一个工作示例: