Pandas时间戳索引DataFrame获取指定索引行号用于切片的方法咨询
实现方法
你可以通过Pandas索引自带的get_loc()方法直接获取指定时间戳对应的整数行位置,具体实现如下:
核心代码
import pandas as pd # 替换为你的DataFrame变量名 target_datetime = pd.to_datetime("2020-12-01 04:00:00") # 获取对应行的整数位置(Pandas行位置从0开始计数) row_pos = df.index.get_loc(target_datetime)
你举的示例中row_pos返回值为4,对应从1开始计数的第5行。如果要执行删除前5行的操作,直接按如下写法即可:
# 切片左闭右开,因此+1才能包含目标位置的行 df = df.drop(df.index[:row_pos + 1])
补充说明
- 该方法仅对唯一索引生效,如果你的时间戳索引存在重复值,
get_loc()会返回布尔数组或切片对象,你可以改用np.where()获取位置:import numpy as np row_pos = np.where(df.index == target_datetime)[0][0] - 如果你只是需要截取目标时间之后的所有数据,不需要额外转位置,直接用时间切片更简洁:
# 直接取目标时间及之后的所有行 df = df[target_datetime:] # 直接取目标时间之后的所有行(不包含目标行) df = df[target_datetime:].iloc[1:]
内容的提问来源于stack exchange,提问作者Denis Alexandre da Silva
相关产品推荐
相关产品推荐

