Python:检查数据是否存在少于15分钟的更新为1 else 0


timestamp,value
19/12/2017 12:00:00,12
19/12/2017 12:01:00,13
19/12/2017 12:05:00,15
19/12/2017 12:10:00,23
19/12/2017 12:11:00,46
19/12/2017 12:13:00,12
19/12/2017 12:14:59,34
19/12/2017 12:15:00,33
19/12/2017 12:16:00,33
19/12/2017 12:30:00,87
19/12/2017 12:50:00,44
19/12/2017 12:56:00,54
19/12/2017 1:16:00,54
19/12/2017 1:29:59,54

逻辑:< 15分钟包含1 else 0

上面是我的数据集,现在我想为15分钟的设置频率,好像在15分钟内存在,所以在新列中条目将被更新为1。如果数据不超过15分钟,则输入的条目将更新为0。注意:如果Wthin 15分钟也有一个数据,它将是一个。

条件将是;如果数据在时间戳12:00:00至12:14:59之内,则比1 else 0。如果有任何丢失的数据也将是0。

代码:

import pandas as pd
df = pd.read_csv('mydata.csv', parse_dates=['timestamp'] )
print (df)
mask=(df['timestamp'].dt.minute<15)
df1 = df[mask]
print (df1)

预期输出:

2017-12-19 12:00:00     12    1    
2017-12-19 12:01:00     13    1  
2017-12-19 12:05:00     15    1  
2017-12-19 12:10:00     23    1  
2017-12-19 12:11:00     46    1
2017-12-19 12:13:00     12    1 
2017-12-19 12:14:59     34    1  
2017-12-19 12:15:00     33    1  
2017-12-19 12:16:00     33    1  
2017-12-19 12:30:00     87    1  
2017-12-19 12:50:00     44    1 
2017-12-19 12:56:00     54    1  
2017-12-19 01:00:00 to 2017-12-19 01:14:59 no data update as 0
2017-12-19 01:16:00     54    0    
2017-12-19 01:29:59     54    0

要求是;我正在检查15分钟的频率是数据或丢失的15分钟,而不是将其丢失为0,并且如果数据在15分钟内,则与1.

相比。

这是代码可以获取所需的输出并帮助获得图形。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('mydata.csv', parse_dates=['timestamp'] )
df['new'] = df['timestamp'].diff().dt.total_seconds().fillna(0).abs().lt(60 * 15).astype(int) 
df = df.sort_values('timestamp', ascending=True)
plt.plot(df['timestamp'], df['new'])
plt.xticks(rotation='vertical')
plt.show()

相关内容

最新更新