我有一个系列vec
已经以2000Hz采样。我想做的是以50Hz的步长对这个系列进行采样。我的问题是我不太明白如何用熊猫做到这一点。
我不太明白如何将vec
包裹到DataFrame
并相应地使用pd.date_range
设置时间戳。
我可以显示的代码是完全错误的,因此我无法向您展示到目前为止我所做的事情。但是我可以用伪Python向你展示我想做的事情:
# Get a date range for vec
date_range = pd.date_range(len(vec), sampling_rate=2000, unit='Hz')
# Create a DataFrame for the 2000Hz series
df_2k = pd.DataFrame(vec, index=date_range)
# Sample down to 1950Hz, 1900Hz, ..
df_1950Hz = df_2k.resample(sampling_rate=1950, unit='Hz')
df_1900Hz = df_2k.resample(sampling_rate=1900, unit='Hz')
知道我该怎么做吗?
我认为什么也可以工作就像
df_1950Hz = df_2k.drop_every(nth_sample=int(2000/50))
答案 0 :(得分:3)
首先,从你的频率构建一个时期:
freq = 1950
period = '{}N'.format(int(1e9 / freq))
这为您提供了'512820N'
,Pandas将其理解为纳秒级。然后:
df2k.resample(period).mean() # you could use e.g. `last()` instead
至于你的初始索引,也许你想要这个:
freq = 2000
period = '{}N'.format(int(1e9 / freq))
index = pd.date_range(start, periods=len(vec), freq=period)
start
是任意的。