对于给定的时间戳,在具有最接近时间戳的数据框中找到行的索引

问题描述 投票:0回答:1

我有一个由3列(时间戳,名称,值)组成的DataFrame。

DF的行按时间戳按升序排序。

给出了在DF中可能不完全匹配的输入时间戳和目标名称(保证是连续的)。

我想在以下位置找到该行的索引:

  1. 行中的时间戳等于输入的时间戳或

  2. 是下一个小于输入时间戳记,并且行名等于给定名称。

此外,时间戳中的时间戳都是唯一的。

给出以下DataFrame:

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

对于时间戳= 3,名称= B,索引应为1

对于时间戳= 6,名称= C,索引应为2

对于时间戳= 13,名称= A,索引应为4

对于时间戳= 6且名称= D,索引应为NaN,因为在时间6或之前没有值

如何在熊猫中(希望有效地)做到这一点?

python pandas dataframe time-series closest
1个回答
0
投票

如果查询的数据框不为空,则可以运行名称查询,按时间戳排序并获取具有最大值的项目的索引。这样的事情应该起作用。

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]
© www.soinside.com 2019 - 2024. All rights reserved.