问题描述
我目前使用1分钟的采样采集了一组振动数据,目前正在尝试将数据重新采样为5分钟的块。
我的数据框在所有3个XYZ轴上都具有相同的参数,但是为了简化起见,我只会显示X。
我的数据框:month_night_df
如下所示:
Measurement Time MAX_X_APW X_PPV X_VDV X_CF X_DF
Start Time
2020-08-04 23:00:06 0 days 00:01:00 0.00025 0.04 0.00027 3.5 0.5
2020-08-04 23:01:06 0 days 00:01:00 0.00021 0.03 0.00026 3.0 0.5
2020-08-04 23:02:06 0 days 00:01:00 0.00023 0.04 0.00025 3.5 0.5
2020-08-04 23:03:06 0 days 00:01:00 0.00025 0.04 0.00028 3.8 0.5
2020-08-04 23:04:06 0 days 00:01:00 0.00024 0.04 0.00027 3.5 0.5
2020-08-04 23:05:06 0 days 00:01:00 0.00029 0.04 0.00028 4.3 1.5
2020-08-04 23:06:06 0 days 00:01:00 0.00023 0.03 0.00027 3.3 0.5
2020-08-04 23:07:06 0 days 00:01:00 0.00022 0.04 0.00028 3.3 1.0
2020-08-04 23:08:06 0 days 00:01:00 0.0002 0.03 0.00025 3.0 0.5
2020-08-04 23:09:06 0 days 00:01:00 0.00024 0.04 0.00027 3.6 0.5
...
我希望将代码重新采样为5分钟的块,每列具有指定的重新采样方法,即:
测量时间:总结
MAX_X_APW:每5个1分钟采样集中的最大值
X_PPV:如上MAX_X_APW
VDV:总结为5分钟,具体为(sum(each1minvalue ** 4)) ** 0.25
X_CF和X_DF:我需要程序返回与最大MAX_X_APW值关联的CF(波峰因数)和DF(主导频率)。这是我遇到问题的地方。
因此,仅考虑MAX_X_APW,X_CF和X_DF的新重采样数据帧的示例将是:
MAX_X_APW X_CF X_DF
Start Time
2020-08-04 23:00:00 0.00025 3.5 0.5
2020-08-04 23:05:00 0.00029 4.3 1.5
值得注意的是,在上面的示例中,在23:00-23:04之间有两行MAX_X_APW为0.00025。关联的CF和DF取哪一个无关紧要,只取其中之一即可。
这是我目前的代码:
def VDV(array_like):
return ((np.sum(array_like ** 4)) ** 0.25)
#resample the data using specific summing techniques for each axis
resample = month_night_df.resample('300s').agg(
{'Measurement Time': np.sum,'MAX_X_APW': np.max,'X_PPV': np.max,'X_VDV':VDV})
这对于其中的值当前非常有效。但是我对于如何获得CF和DF的正确值一无所知。我尝试了与VDV类似的方法,该方法可以将VDV输出到外部函数,但是我无法弄清楚如何正确格式化代码以输出所需的内容。
还有另外两个与我的非常相似的stackoverflow问题,但是我无法让他们的方法对我有用。它们是here和here。
理想情况下,我希望我的解决方案能够在我的.agg字典中实现,以便进行如上所述的重新采样,但是,如果需要的话,我不介意一个不太整洁的解决方案,我会形成一个新的df并将其连接到我的重新采样一个。
请告知我是否需要进一步的详细信息,
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)