我有一个时间序列数据,其中有每分钟的数据,但是由于传感器的一些问题,有时无法获取数据并且没有记录该分钟的数据。我想知道这件事发生在哪一天、什么时间。我有 pandas 数据框中的数据。这是我要存储在数据框中的代码片段,我想显示未收到哪一分钟的数据。
l=['Year', 'Month', 'Day', 'Hour', 'Minute']
df = pd.DataFrame(columns=l)
k=0
if __name__ == '__main__':
client = MongoClient("localhost", 27017, maxPoolSize=50)
db=client.test
collection=db['data']
cursor = collection.find({"deviceId":3},{"timestamp":1,"cd":1}).sort("timestamp",-1).limit(1000)
for document in cursor:
for key,value in document.items()[1:-1]:
df.loc[k,'Year']=2017
df.loc[k,'Month']=value.month
df.loc[k,'Day']=value.day
df.loc[k,'Hour']=value.hour
df.loc[k,'Minute']=value.minute
k=k+1
minute_a = pd.Series(np.arange(0, 60))
我正在考虑使用 minute_a
来使用 isin
函数,但由于每个小时我都必须检查,我不知道该怎么做?
最佳答案
isin将是这样做的好方法。不过,最简单的方法是将传感器时间数据平铺到单个 DatetimeIndex
中,以便您可以将其与引用 DatetimeIndex
进行比较。
# creating reference DatetimeIndex idx_ref with a minute frequency
end=datetime.now().replace(second=0, microsecond=0)
dt = end - timedelta(days=1)
idx_ref = pd.DatetimeIndex(start=dt, end=end,freq='min')
# idx_dat represents your DatetimeIndex from the sensor
gaps = idx_ref[~idx_ref.isin(idx_dat)]
假设您当然只对时间间隙感兴趣。
关于python - 使用 pandas 查找时间序列数据中缺失的分钟数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47831863/