pandasのdatetimeの丸めの基準はどこか
忙しい人のための回答
1970年1月1日0時0分0秒 っぽい
はじめに
pandas では roundやfloorを用いで日付を丸めることが出来ます.
それは1分や1時間のような単位だけでなく,5分毎に丸める,といった操作も可能です.
5分ごとにまとめる場合は,例えば次のようにします.
import pandas as pd
dates = pd.date_range('1/1/2021 00:00:00', periods=10, freq='min')
print("original date:")
print(dates)
print("floor date:")
print(dates.floor('5T'))
original date:
DatetimeIndex(['2021-01-01 00:00:00', '2021-01-01 00:01:00',
'2021-01-01 00:02:00', '2021-01-01 00:03:00',
'2021-01-01 00:04:00', '2021-01-01 00:05:00',
'2021-01-01 00:06:00', '2021-01-01 00:07:00',
'2021-01-01 00:08:00', '2021-01-01 00:09:00'],
dtype='datetime64[ns]', freq='T')
floor date:
DatetimeIndex(['2021-01-01 00:00:00', '2021-01-01 00:00:00',
'2021-01-01 00:00:00', '2021-01-01 00:00:00',
'2021-01-01 00:00:00', '2021-01-01 00:05:00',
'2021-01-01 00:05:00', '2021-01-01 00:05:00',
'2021-01-01 00:05:00', '2021-01-01 00:05:00'],
dtype='datetime64[ns]', freq=None)
ここで気になるのが,5分のようにキリの良い数字ではなく,7分のようなキリの悪い数字を使った際の挙動です.
検証
例えばpandas.Series.dt.floorのreferenceを読んでも
Perform floor operation on the data to the specified freq.
としか書いてなかったので,実際にやってみます.
2021年年始と1970年年始で挙動を確認してみます.
import pandas as pd
dates = pd.date_range('1/1/2021 00:00:00', periods=14, freq='min')
print("original date:")
print(dates)
print("floor date:")
print(dates.floor('7T'))
dates = pd.date_range('1/1/1970 00:00:00', periods=14, freq='min')
print("original date:")
print(dates)
print("floor date:")
print(dates.floor('7T'))
original date:
DatetimeIndex(['2021-01-01 00:00:00', '2021-01-01 00:01:00',
'2021-01-01 00:02:00', '2021-01-01 00:03:00',
'2021-01-01 00:04:00', '2021-01-01 00:05:00',
'2021-01-01 00:06:00', '2021-01-01 00:07:00',
'2021-01-01 00:08:00', '2021-01-01 00:09:00',
'2021-01-01 00:10:00', '2021-01-01 00:11:00',
'2021-01-01 00:12:00', '2021-01-01 00:13:00'],
dtype='datetime64[ns]', freq='T')
floor date:
DatetimeIndex(['2020-12-31 23:55:00', '2020-12-31 23:55:00',
'2021-01-01 00:02:00', '2021-01-01 00:02:00',
'2021-01-01 00:02:00', '2021-01-01 00:02:00',
'2021-01-01 00:02:00', '2021-01-01 00:02:00',
'2021-01-01 00:02:00', '2021-01-01 00:09:00',
'2021-01-01 00:09:00', '2021-01-01 00:09:00',
'2021-01-01 00:09:00', '2021-01-01 00:09:00'],
dtype='datetime64[ns]', freq=None)
original date:
DatetimeIndex(['1970-01-01 00:00:00', '1970-01-01 00:01:00',
'1970-01-01 00:02:00', '1970-01-01 00:03:00',
'1970-01-01 00:04:00', '1970-01-01 00:05:00',
'1970-01-01 00:06:00', '1970-01-01 00:07:00',
'1970-01-01 00:08:00', '1970-01-01 00:09:00',
'1970-01-01 00:10:00', '1970-01-01 00:11:00',
'1970-01-01 00:12:00', '1970-01-01 00:13:00'],
dtype='datetime64[ns]', freq='T')
floor date:
DatetimeIndex(['1970-01-01 00:00:00', '1970-01-01 00:00:00',
'1970-01-01 00:00:00', '1970-01-01 00:00:00',
'1970-01-01 00:00:00', '1970-01-01 00:00:00',
'1970-01-01 00:00:00', '1970-01-01 00:07:00',
'1970-01-01 00:07:00', '1970-01-01 00:07:00',
'1970-01-01 00:07:00', '1970-01-01 00:07:00',
'1970-01-01 00:07:00', '1970-01-01 00:07:00'],
dtype='datetime64[ns]', freq=None)
やはりというべきか,(毎年の年始の0時0分のような基準ではなく)1970年1月1日0時0分基準のようですね.
Author And Source
この問題について(pandasのdatetimeの丸めの基準はどこか), 我々は、より多くの情報をここで見つけました https://qiita.com/fockl/items/280077e829271f0042ae著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .