gpt4 book ai didi

python - 时间戳偏移量(天、小时、分钟等)

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:39 25 4
gpt4 key购买 nike

假设我在 Pandas 中有一个时间戳:

Timestamp('2014-08-07 11:01:02')

我想知道一小时内有多少毫秒。我如何在 Pandas 中执行此操作?

在上面的示例中,我会寻找以下之间的毫秒差异:

  • 时间戳('2014-08-07 11:01:02')
  • 时间戳('2014-08-07 11:00:00')

如果我有一个像下面这样的包含时间戳的系列,我该怎么做?

                 timestamp
1071 2014-08-07 11:01:02
3291 2014-08-07 11:01:00
3355 2014-08-07 05:01:00
3518 2014-08-07 05:01:03
4207 2014-08-07 13:01:03
5039 2014-08-07 18:01:04
5063 2014-08-07 23:01:03
6926 2014-08-07 06:01:02
6965 2014-08-07 06:01:02
7107 2014-08-07 05:01:01
Name: events_source_timestamp, dtype: datetime64[ns]

更新:

尝试@Jeff 的回答。以下作品:

In [210]: temp_df = m*(df.astype('i8')/m).astype('i8')
Out[210]:
A_timestamp B_timestamp
1 1407405600000000000 1407405600000000000
2 1407445200000000000 1407445200000000000
3 1407434400000000000 1407434400000000000
4 1407445200000000000 1407445200000000000
5 1407438000000000000 1407438000000000000
6 1407402000000000000 1407402000000000000
7 1407420000000000000 1407420000000000000
8 1407438000000000000 1407438000000000000
9 1407438000000000000 1407438000000000000
10 1407420000000000000 1407420000000000000
11 1407420000000000000 1407420000000000000
12 1407441600000000000 1407441600000000000
13 1407409200000000000 1407409200000000000
14 1407391200000000000 1407391200000000000
15 1407409200000000000 1407409200000000000
16 1407420000000000000 1407420000000000000

然后

pd.DatetimeIndex(temp_df)

失败:

/Users/josh/anaconda/envs/py3k/lib/python3.3/site-packages/pandas/tseries/tools.py in parse_time_string(arg, freq, dayfirst, yearfirst)
472 except Exception as e:
473 # TODO: allow raise of errors within instead
--> 474 raise DateParseError(e)
475
476 if parsed is None:

DateParseError: unknown string format

最佳答案

这是执行此操作的规范方法,请参阅文档 here有关 Timedelta 处理的方法。

In [16]: s = Series([Timestamp('20140804 11:01:12'),Timestamp('20140804 11:00:00')])

In [17]: s
Out[17]:
0 2014-08-04 11:01:12
1 2014-08-04 11:00:00
dtype: datetime64[ns]

In [18]: (s-Timestamp('20140804 11:00:00')).astype('timedelta64[ms]')
Out[18]:
0 72000
1 0
dtype: float64

In [19]: (s-Timestamp('20140804 11:00:00')) / np.timedelta64(1,'ms')
Out[19]:
0 72000
1 0
dtype: float64

这是一种将系列四舍五入到最近的小时的方法,尽管它有点老套,并且需要作为适当的 DatetimeIndex 方法实现,请参阅 here

In [169]: m = int(1e9*60*60)

In [170]: rounded = Series(pd.DatetimeIndex(m*(s.astype('i8')/m).astype('i8')))

In [171]: rounded
Out[171]:
0 2014-08-04 11:00:00
1 2014-08-04 11:00:00
dtype: datetime64[ns]

In [172]: (s-rounded).astype('timedelta64[ms]')
Out[172]:
0 72000
1 0
dtype: float64

关于python - 时间戳偏移量(天、小时、分钟等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com