我一直在运行一个实验,输出两列数据:
我现在想将其加载到Pandas中以重新采样并绘制测量值。我以前做过这个,但那些时间我的时间戳是从纪元或日期时间(YYY-MM-DD HH:mm:ss)格式开始的。如果我将我的第一列作为整数加载我无法做到
data.resample('5Min', how='mean')
。如果我将第一列转换为timedelta(seconds=...)
,似乎也不可能。我的问题是,是否可以重新采样这些数据而不会破坏时代转换?
答案 0 :(得分:3)
您可以groupby
使用time // period
来执行此操作:
import pandas as pd
import numpy as np
t = np.random.rand(10000)*3600
t.sort()
v = np.random.rand(10000)
df = pd.DataFrame({"time":t, "value":v})
period = 5*60
s = df.groupby(df.time // period).value.mean()
s.index *= period
答案 1 :(得分:0)
我具有相同的传感器数据结构。第一列是自实验开始以来的秒数,其余列为值。 这是数据结构:
time x y z
0 0.015948 0.403931 0.449005 -0.796860
1 0.036006 0.403915 0.448029 -0.795395
2 0.055885 0.404907 0.446548 -0.795853
这对我有用: 将时间转换为时间增量:
df.time=pd.to_timedelta(df.time,unit="s")
set the time as index
df.set_index("time",inplace=True)
重新采样到您想要的频率
df.resample("40ms").mean()