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混淆,欧洲或美国格式更为清晰。