查找到达时间序列中特定点的时间



我有一组时间序列数据,我试图在其中找到它们达到特定值的时间点。我试过了,这给了我答案,但产生了整个列,而不是时间列中的特定值,我不确定如何在几个列上迭代。

num = df['Time column'].where(df['Data Column'] >Value of interest)
print (num)

非常感谢您的帮助。

使用DataFrame.loc,您可以找到满足条件的行。检查以下示例:

mock_time_series.csv
time,v1,v2     
100,10,20
200,20,22
300,14,12
400,33,22
500,43,62
df = pd.read_csv('mock_time_series.csv')

通过使用.loc:

df.loc[df['v1'] >= 20]['time'].values

你会得到一个回应:

array([200, 400, 500])

同样,对于"v2"列:

df.loc[df['v2'] >= 20]['time'].values

各个时间列表如下:

array([100, 200, 400, 500])

然后,如果你想要常见交集的列表,你可以得到两个列表的交集(列表交集,来自这个响应(:

# intersection of lists list(set(a) & set(b))
list(set(df.loc[df['v1'] >= 20]['time'].values) & set(df.loc[df['v2'] >= 20]['time'].values))

结果列表如下:

[200, 500, 400]

非常感谢您的帮助。这走上了正确的道路。这确实把它作为一个数组,所以这不是最干净的方法,但很容易看到哪些行到达点以及何时到达:

df = pd.read_excel("file location")
for column_name in df:
array = df.loc[df[column_name] >= 10]['Time'].values
first_number = array[:1]
print(column_name, first_number)

最新更新