Python Pandas to_datetime结果不正确(不同行的类型不同)

Python Pandas to_datetime结果不正确(不同行的类型不同),python,pandas,dataframe,Python,Pandas,Dataframe,我使用来设置数据帧的数据格式,如下所示: import pandas as pd df = pd.read_csv('C:/Users/79219/Downloads/bd_with_names.csv', sep = ';') from datetime import datetime, date df['data_posledney_pokupki']=df['data_posledney_pokupki'].str.split(' ').str.get(0) df.head() df['

我使用
来设置数据帧的数据格式,如下所示:

import pandas as pd
df = pd.read_csv('C:/Users/79219/Downloads/bd_with_names.csv', sep = ';')
from datetime import datetime, date 
df['data_posledney_pokupki']=df['data_posledney_pokupki'].str.split(' ').str.get(0)
df.head()
df['created_date']=df['created_date'].str.split(' ').str.get(0)
df.head()
在我更改类型之前,请更正数据。 输出1是:

    user_id created_date    summa_pokupok   kolichestvo_pokupok data_posledney_pokupki
0   0000186661  2018-05-15  760           1                      21.02.2020
1   21_0018542  2017-02-11  1899          1                      11.01.2020
2   17_0069595  2017-11-01  14606   13                           26.06.2020
3   14_0109526  2017-03-18  18334   4                            06.03.2020
在我将
应用于\u datetime

df['data\u posledney\u pokupki']=pd.to\u datetime(df['data\u posledney\u pokupki'],格式=“%Y/%m/%d”)
df['created_date']=pd.to_datetime(df['created_date'])
df.head()
在某些字符串中,天和月切换,在某些字符串中,保持正确的位置: 输出2是:

0   0000186661  2018-05-15  760   1     2020-02-21
1   21_0018542  2017-02-11  1899    1   2020-11-01
2   17_0069595  2017-11-01  14606   13  2020-06-26
3   14_0109526  2017-03-18  18334   4   2020-06-03
第[0]行中的数据仍然正确,但第[1]行中的日期现在错误。
哪里出了错?

我很惊讶,即使在这种情况下,它对你也有效

您提供的
格式必须与匹配,而您的格式不正确

我看到您有两种格式:

  • 2018-05-15
  • 21.02.2020
  • 我假设(1)是
    YYYY-MM-DD
    ,(2)是
    DD.MM.YYYY

    因此,使用上面链接中显示的信息,您应该已通过:

  • format=“%Y-%m-%d”
  • format=“%d.%m.%Y”
  • 注意:

    • %Y
      %m
      等是规范
    • 其他所有内容都与编写的一样,因此如果存在
      -
      则使用
      -
      ,如果存在
      则使用

      • 它就在这一行。您没有定义日期字符串的格式

        #错误
        df['created_date']=pd.to_datetime(df['created_date'])
        #对
        df['created_date']=pd.to_datetime(df['created_date'],format=“%Y-%m-%d”)
        
        这同样适用于要转换的其他日期列。您定义的格式错误。您的“实际日期”列中有
        作为年、月、日之间的分隔符,而不是
        /
        <代码>2020.08.01
    。它应该反映在您正在传递的格式中,因此它变成
    %Y.%m.%d

    #错误
    df['data_posledney_pokupki']=pd.to_datetime(df['data_posledney_pokupki'],格式=“%Y/%m/%d”)
    #对
    df['data_posledney_pokupki']=pd.to_datetime(df['data_posledney_pokupki'],格式=“%Y.%m.%d”)
    
    您好,我不确定这里有什么问题。在我看来,作为示例显示的列很好。请详细说明一下好吗?请尝试将
    更改为\u datetime
    参数格式更改为
    格式=“%d.%m.%Y”
    “data\u posledney\u pokupki”
    与您指定的格式不匹配,因此不应将其转换为日期时间。您应该看到:
    ValueError:time data 21.02.2020与指定的格式不匹配
    它不工作。即使在这种情况下,1月11日变为11月1日,但其他日期保持正确最初我根本不添加格式参数,结果是相同的,即使这样,1月11日变为11月1日。不,我想你会感到困惑:有一个所有日期时间都转换为的日期。这就是全世界想要在全球范围内交流时所使用的。它本质上是东亚格式,因为由于我们的格式之间的MM/DD/YYYY与DD/MM/YYYY混淆,欧洲或美国格式更为清晰。