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