我希望你们能帮我解决Python编码问题。我有一个CSV文件,在24小时内获取了超过500万个数据点。该文件包含两列 - UTC时间和强度值。我想将所有强度数据平均每6分钟分成3分钟范围(例如平均值(x-1.5分钟:x + 1.5分钟),其中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命令(我似乎无法正确), 以及首先将所有时间转换为秒,然后从那里进行计算(但这似乎是太多的工作)。有谁知道我应该做什么?
谢谢!
答案 0 :(得分:0)
我不知道您对熊猫有多了解,但假设您可以将数据从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'))