Python 对于给定的时间戳,查找具有最接近时间戳的数据帧中的行索引
我有一个由3列(时间戳、名称、值)组成的数据帧 DF的行按时间戳升序排序 给定一个输入时间戳,该时间戳在DF和目标名称(保证在一行上)中可能不具有相同的匹配项 我想找到行的索引,其中:Python 对于给定的时间戳,查找具有最接近时间戳的数据帧中的行索引,python,pandas,dataframe,time-series,closest,Python,Pandas,Dataframe,Time Series,Closest,我有一个由3列(时间戳、名称、值)组成的数据帧 DF的行按时间戳升序排序 给定一个输入时间戳,该时间戳在DF和目标名称(保证在一行上)中可能不具有相同的匹配项 我想找到行的索引,其中: 行中的时间戳等于输入时间戳或 是比输入时间戳小的下一个,并且行的名称等于给定的名称 此外,时间戳中的时间戳都是唯一的 给定以下数据帧: row timestamp name value 0 1 A V1 1 3 B V2 2
row timestamp name value
0 1 A V1
1 3 B V2
2 5 C V3
3 7 D V4
4 9 A V5
5 11 B V6
6 13 C V7
7 15 D V8
对于timestamp=3和name=B,索引应为1
对于timestamp=6和name=C,索引应为2
对于timestamp=13和name=A,索引应为4
对于timestamp=6和name=D,索引应为NaN,因为在时间6时或之前没有值
如何在pandas中实现这一点(希望是有效的?如果查询的数据框不是空的,您可以运行名称查询、按时间戳排序并获取具有最大值的项的索引。这样的办法应该行得通
def run_query(df, search_name, search_timestamp):
query = df.loc[(df['name'] == search_name) & (df['timestamp'] <= search_timestamp)] \
.sort_values('timestamp')
return None if query.empty else query.index[-1]
def运行查询(df、搜索名称、搜索时间戳):
query=df.loc[(df['name']==search_name)&(df['timestamp']