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
逻辑:< 15min包括1其他0
以上是我的数据集,现在我想要设置15Min的频率,好像在15Min数据内有新数据 条目将更新为1.如果数据不是15分钟,则条目将更新为0。 注意:如果15分钟,任何一个数据也存在,那么它就是一个。
条件将是; 如果数据在时间戳12:00:00到12:14:59之间,则其他数据为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。
答案 0 :(得分:0)
这是代码可以获得所需的输出并帮助获取图形。
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()