在没有小时格式的 pandas DataFrame 中重复日期

Repeating dates in pandas DataFrame without hour format

我正在尝试在我的数据框 df1 中插入一系列日期标签。我已经完成了一部分,但我仍然有一些障碍需要消除。

我正在尝试生成一个日期从 2017-01-01 到 2020-12-31 的列,所有日期都重复 24 次,即一个包含 35,068 行的列。

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

现在

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')

1461 * 24 = 35064

所以我不确定 35,068 是从哪里来的。你确定那个数字吗?