使用 Python 在 CSV 文件中平均每 6 分钟的特定时间范围

Averaging a specific time range for every 6 minutes in a CSV file with Python

我希望你们能帮我解决一个 Python 编码问题。我有一个 CSV 文件,其中包含 24 小时内获取的超过 500 万个数据点。该文件包含两列 - UTC 时间和强度值。我想每 6 分钟将所有强度数据平均到 3 分钟范围内(例如 mean(x-1.5 min : x+1.5 min),其中 x 是 0、6、12、18 等的数组)。我尝试了多种途径,但似乎没有任何效果。

我调用数据使用:

df=pd.read_csv("file.csv",names=['Date','Intensity'], na_values='nan') 

数据示例:

df=
'Date'                                   'Intensity'
2016-06-17 00:00:00.054951500            15299
2016-06-17 00:00:00.056950500            13248
2016-06-17 00:00:00.058948500            12838
2016-06-17 00:00:00.060942500            8920
2016-06-17 00:00:00.062947500            12631
2016-06-17 00:00:00.064942500            13455 
... (continues on for 24 hours)....

想法是每 6 分钟做一个 3 分钟的平均值(不包括第一个和最后一个平均值)。例如,结果数据应计算如下:

df=
                         'Date'                 'Intensity'
average(0 : 1.5 min)=        2016-06-17 00:00:00     14554              
average(4.5 : 7.5 min)=      2016-06-17 00:06:00     18243              
average (10.5 : 13.5 min)=   2016-06-17 00:12:00     20244              
average (16.5 : 19.5 min)=   2016-06-17 00:18:00     10722  
... 

到目前为止,我已经尝试使用: pd.Timedelta 命令(我似乎做错了), 以及首先将所有时间转换为秒,然后从那里计算(但这似乎工作量太大)。有人知道我应该做什么吗?

谢谢!

我不知道你了解多少pandas,但假设你可以将数据从 CSV 加载到 DataFrame,你可以做的是:

import pandas as pd

# load data from csv into intesity_df
...

# group by time
intensity_df = intensity_df.groupby(pd.Grouper(key='date', freq='3min'))