Python 在无小时格式的数据框中重复日期
我试图在数据框df1中插入一系列日期标签。我已经设法解决了一些问题,但我仍然有一些问题需要解决 我试图生成一个日期为2017-01-01到2020-12-31的列,所有日期重复24次,即一个包含35068行的列Python 在无小时格式的数据框中重复日期,python,pandas,date,date-range,Python,Pandas,Date,Date Range,我试图在数据框df1中插入一系列日期标签。我已经设法解决了一些问题,但我仍然有一些问题需要解决 我试图生成一个日期为2017-01-01到2020-12-31的列,所有日期重复24次,即一个包含35068行的列 dates = pd.date_range(start="01-01-2017", end="31-12-2020") num_repeats = 24 repeated_dates = pd.DataFrame(dates.repeat(num_
dates = pd.date_range(start="01-01-2017", end="31-12-2020")
num_repeats = 24
repeated_dates = pd.DataFrame(dates.repeat(num_repeats))
df1.insert(0, 'Date', repeated_dates)
但是,它只生成最后一个日期的一些迭代,这意味着我的列在剩下的x小时内将是NaT
output:
Date DK1 Up DK1 Down DK2 Up DK2 Down
0 2017-01-01 0.0 0.0 0.0 0.0
1 2017-01-01 0.0 0.0 0.0 0.0
2 2017-01-01 0.0 0.0 0.0 0.0
3 2017-01-01 0.0 0.0 0.0 0.0
4 2017-01-01 0.0 0.0 0.0 0.0
... ... ... ... ... ...
35063 2020-12-31 0.0 0.0 0.0 0.0
35064 NaT 0.0 0.0 0.0 0.0
35065 NaT 0.0 -54.1 0.0 0.0
35066 NaT 25.5 0.0 0.0 0.0
35067 NaT 0.0 0.0 0.0 0.0
此外,我如何将日期格式从“2017-01-01”更改为“01-01-2017”?您的设置非常完美,下面是您的日期
import pandas as pd
import numpy as np
dates = pd.date_range(start="01-01-2017", end="31-12-2020")
num_repeats = 24
df = pd.DataFrame(dates.repeat(num_repeats),columns=['date'])
使用strftime
函数可以很简单地将列转换为所需的格式
df['newFormat'] = df['date'].dt.strftime('%d-%m-%Y')
给
date newFormat
0 2017-01-01 01-01-2017
1 2017-01-01 01-01-2017
2 2017-01-01 01-01-2017
3 2017-01-01 01-01-2017
4 2017-01-01 01-01-2017
... ... ...
35059 2020-12-31 31-12-2020
35060 2020-12-31 31-12-2020
35061 2020-12-31 31-12-2020
35062 2020-12-31 31-12-2020
35063 2020-12-31 31-12-2020
现在
给予
及
1461*24=35064
所以我不确定35068从哪里来。你确定那个数字吗?谢谢-我实际上没有做那个计算(盲目相信自己数据的陷阱;-)。我得到35068是因为我的数据中有4个空行(出于某种原因)。谢谢你的回答!
dates = pd.date_range(start="01-01-2017", end="31-12-2020")
DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04',
'2017-01-05', '2017-01-06', '2017-01-07', '2017-01-08',
'2017-01-09', '2017-01-10',
...
'2020-12-22', '2020-12-23', '2020-12-24', '2020-12-25',
'2020-12-26', '2020-12-27', '2020-12-28', '2020-12-29',
'2020-12-30', '2020-12-31'],
dtype='datetime64[ns]', length=1461, freq='D')