在转换为日期时间时遇到问题


df_non_holidays=pd.read_csv("holidays.csv")

print(df_non_holidays["date"])
0     25-06-21
1     28-06-21
2     29-06-21
3     30-06-21
4     01-07-21
5     02-07-21
6     05-07-21
7     06-07-21
8     07-07-21
9     08-07-21
10    09-07-21
11    12-07-21
12    13-07-21
13    14-07-21
14    15-07-21
15    16-07-21
16    19-07-21
17    20-07-21
18    22-07-21
19    23-07-21
20    26-07-21
21    27-07-21
22    28-07-21
23    29-07-21
24    30-07-21
Name: date, dtype: object
df_non_holidays["date"]= pd.to_datetime(df_non_holidays["date"])
0    2021-06-25
1    2021-06-28
2    2021-06-29
3    2021-06-30
4    2021-01-07
5    2021-02-07
6    2021-05-07
7    2021-06-07
8    2021-07-07
9    2021-08-07
10   2021-09-07
11   2021-12-07
12   2021-07-13
13   2021-07-14
14   2021-07-15
15   2021-07-16
16   2021-07-19
17   2021-07-20
18   2021-07-22
19   2021-07-23
20   2021-07-26
21   2021-07-27
22   2021-07-28
23   2021-07-29
24   2021-07-30
Name: date, dtype: datetime64[ns]

转换后,从索引号:4,月份和日期的变化不同。在将对象转换为datetime..

的方法中有什么问题吗?请引导我……

您还需要传递格式字符串,或者如果您不想传递格式,也可以传递dayfirst=True。但是传递dayfirst可能并不总是适用于所有类型的datetime字符串值;然而,如果你传递了正确的格式,传递format总是有效的。

>>> pd.to_datetime(df_non_holidays["date"], format='%d-%m-%y')
0    2021-06-25
1    2021-06-28
2    2021-06-29
3    2021-06-30
4    2021-07-01
5    2021-07-02
6    2021-07-05
7    2021-07-06
8    2021-07-07
9    2021-07-08
10   2021-07-09
11   2021-07-12
12   2021-07-13
13   2021-07-14
14   2021-07-15
15   2021-07-16
16   2021-07-19
17   2021-07-20
18   2021-07-22
19   2021-07-23
20   2021-07-26
21   2021-07-27
22   2021-07-28
23   2021-07-29
24   2021-07-30
Name: date, dtype: datetime64[ns]

关于documentation,您可以使用以下参数之一

  • dayfirst告诉第一个值是日而不是月

    df_non_holidays["date"] = pd.to_datetime(df_non_holidays["date"], dayfirst=True)
    
  • format明确地告诉它是%d-%m-%y

    df_non_holidays["date"] = pd.to_datetime(df_non_holidays["date"], format='%d-%m-%y')
    

给出正确的转换

# from
date
0  25-06-21
1  01-07-21
# to
date
0 2021-06-25
1 2021-07-01

最新更新