我在csv文件中有很多时间戳数据,如下所示:
2012-01-01 00:00:00, data
2012-01-01 00:01:00, data
2012-01-01 00:02:00, data
...
2012-01-01 00:59:00, data
2012-01-01 01:00:00, data
2012-01-01 01:01:00, data
我想每分钟删除一次数据,只每小时在python中显示一次,如下所示:
2012-01-01 00:00:00, data
2012-01-01 01:00:00, data
2012-01-01 02:00:00, data
有人可以帮助我吗?谢谢。
答案 0 :(得分:1)
我相信您需要使用熊猫resample
,这是如何使用它来实现所需输出的示例。但是,请记住,由于这是频率转换过程中的重采样操作,因此您必须传递一个函数,说明其他列的行为(汇总与新时间范围相对应的所有值,计算平均值,计算差等)。 ),否则将返回DatetimeIndexResample
。这是一个示例:
import pandas as pd
index = pd.date_range('1/1/2000', periods=9, freq='40T')
series = pd.Series(range(9),index=index)
print(series)
输出:
2000-01-01 00:00:00 0
2000-01-01 00:40:00 1
2000-01-01 01:20:00 2
2000-01-01 02:00:00 3
2000-01-01 02:40:00 4
2000-01-01 03:20:00 5
2000-01-01 04:00:00 6
2000-01-01 04:40:00 7
2000-01-01 05:20:00 8
每小时应用resample
,而无需通过汇总功能:
print(series.resample('H'))
输出:
DatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, base=0]
通过.sum()
后:
print(series.resample('H').sum())
输出:
2000-01-01 00:00:00 1
2000-01-01 01:00:00 2
2000-01-01 02:00:00 7
2000-01-01 03:00:00 5
2000-01-01 04:00:00 13
2000-01-01 05:00:00 8
Freq: H, dtype: int64