在 pandas 中创建日期范围对
Creating date range pairs in pandas
我有两个日期时间,我想在这两个日期时间之间生成 4 小时的固定间隔(不包括最后一个间隔,如果前一个时间戳和 end
).
我被困在 pandas.date_range
的间隔生成上,它只有 returns end
时间戳。例如:
import pandas
from datetime import datetime
start = datetime(2021, 4, 2, 20, 40, 0)
end = datetime(2021, 4, 4, 18, 20, 0)
dates = pandas.date_range(start=end, end=end, freq='4H')
dates
DatetimeIndex(['2021-04-04 18:20:00'], dtype='datetime64[ns]', freq='4H')
目的是生成一个日期时间对列表,例如:
[['2021-04-02 20:40:00', '2021-04-03 00:40:00'], ['2021-04-03 00:40:00', '2021-04-03 04:40:00']...['2021-04-04 16:40:00', '2021-04-04 18:20:00']] #last pair can be cut off by `end`.
我在语法上做错了什么,如何使用 pandas.date_range
生成一对区间列表?
拼写错误(start=end
)导致 dates
只有 1 个值。
但修正拼写错误只会给你一个固定的日期范围。如果你想要那些嵌套对,你可以将 dates
移动 4 小时并且 zip()
:
dates = pandas.date_range(start=start, end=end, freq='4H')
shift = dates + pandas.Timedelta(hours=4)
pairs = list(zip(dates, shift))
# [(Timestamp('2021-04-02 20:40:00', freq='4H'),
# Timestamp('2021-04-03 00:40:00', freq='4H')),
# (Timestamp('2021-04-03 00:40:00', freq='4H'),
# Timestamp('2021-04-03 04:40:00', freq='4H')),
# (Timestamp('2021-04-03 04:40:00', freq='4H'),
# Timestamp('2021-04-03 08:40:00', freq='4H')),
# ...
或者对于列表列表而不是元组列表:
pairs = list(map(list, zip(dates, shift)))
我有两个日期时间,我想在这两个日期时间之间生成 4 小时的固定间隔(不包括最后一个间隔,如果前一个时间戳和 end
).
我被困在 pandas.date_range
的间隔生成上,它只有 returns end
时间戳。例如:
import pandas
from datetime import datetime
start = datetime(2021, 4, 2, 20, 40, 0)
end = datetime(2021, 4, 4, 18, 20, 0)
dates = pandas.date_range(start=end, end=end, freq='4H')
dates
DatetimeIndex(['2021-04-04 18:20:00'], dtype='datetime64[ns]', freq='4H')
目的是生成一个日期时间对列表,例如:
[['2021-04-02 20:40:00', '2021-04-03 00:40:00'], ['2021-04-03 00:40:00', '2021-04-03 04:40:00']...['2021-04-04 16:40:00', '2021-04-04 18:20:00']] #last pair can be cut off by `end`.
我在语法上做错了什么,如何使用 pandas.date_range
生成一对区间列表?
拼写错误(start=end
)导致 dates
只有 1 个值。
但修正拼写错误只会给你一个固定的日期范围。如果你想要那些嵌套对,你可以将 dates
移动 4 小时并且 zip()
:
dates = pandas.date_range(start=start, end=end, freq='4H')
shift = dates + pandas.Timedelta(hours=4)
pairs = list(zip(dates, shift))
# [(Timestamp('2021-04-02 20:40:00', freq='4H'),
# Timestamp('2021-04-03 00:40:00', freq='4H')),
# (Timestamp('2021-04-03 00:40:00', freq='4H'),
# Timestamp('2021-04-03 04:40:00', freq='4H')),
# (Timestamp('2021-04-03 04:40:00', freq='4H'),
# Timestamp('2021-04-03 08:40:00', freq='4H')),
# ...
或者对于列表列表而不是元组列表:
pairs = list(map(list, zip(dates, shift)))