Python 在无小时格式的数据框中重复日期

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_

我试图在数据框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_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')