Python tz 感知 str 到日期时间对象以进行重新采样计算

我有以下 tz 感知字符串。

我想对此数据使用 data.resample('D') 操作。

我在将其转换为正确的格式时遇到一些麻烦。我尝试过使用 pd.to_datetime 但在尝试使用重新采样时出现以下错误。

类型错误:仅对 DatetimeIndex、TimedeltaIndex 或 periodIndex 有效,但获得了“Index”的实例


>>> test1['timestamp']

0        2017-01-03 08:30:00-06:00

1        2017-01-03 08:30:32-06:00

2        2017-01-03 08:30:42-06:00

3        2017-01-03 08:30:46-06:00

4        2017-01-03 08:30:52-06:00

                   ...            

65334    2017-12-29 14:55:02-06:00

65335    2017-12-29 14:55:26-06:00

65336    2017-12-29 14:55:54-06:00

65337    2017-12-29 14:59:23-06:00

65338    2017-12-29 14:59:46-06:00

Name: timestamp, Length: 65339, dtype: object

实现这一目标的最佳方法是什么?


侃侃无极
浏览 44回答 1
1回答

慕慕森

您的错误消息以Only valid with DatetimeIndex ,...开头。因此,在将时间戳列转换为datetime后,从中创建一个DatetimeIndex(并保存它以供将来使用):ind = pd.DatetimeIndex(pd.to_datetime(df.timestamp))结果是:DatetimeIndex(['2017-01-03 08:30:00-06:00', '2017-01-03 08:30:32-06:00',               '2017-01-03 08:30:42-06:00', '2017-01-03 08:30:46-06:00',               '2017-01-03 08:30:52-06:00'],              dtype='datetime64[ns, pytz.FixedOffset(-360)]', name='timestamp', freq=None)或者也许您应该根据上述公式在 DataFrame 中设置索引:wrk = df.set_index(pd.DatetimeIndex(pd.to_datetime(df.timestamp)))\    .drop(columns=['timestamp'])然后重新索引它(使用一些聚合函数),例如:wrk.resample('15s').sum()我将源df创建为:                   timestamp  amount0  2017-01-03 08:30:00-06:00      121  2017-01-03 08:30:32-06:00      142  2017-01-03 08:30:42-06:00      173  2017-01-03 08:30:46-06:00      194  2017-01-03 08:30:52-06:00      23并得到以下结果:                           amounttimestamp                        2017-01-03 08:30:00-06:00      122017-01-03 08:30:15-06:00       02017-01-03 08:30:30-06:00      312017-01-03 08:30:45-06:00      42
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python