我使用to_datetime为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['created_date']=df['created_date'].str.split(' ').str.get(0)
df.head()在我更改类型数据之前。这些output1是:
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在我应用to_datetime之后
df['data_posledney_pokupki'] = pd.to_datetime(df['data_posledney_pokupki'],format="%Y/%m/%d")
df['created_date'] = pd.to_datetime(df['created_date'])
df.head()在某些字符串中,days和month开关保持在正确的位置: output2是:
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行中的数据仍然正确,但row1中的日期现在错误。错误在哪里?
发布于 2020-08-07 03:23:33
令我惊讶的是,即使在它确实有效的情况下,它也能为您工作。
您提供的format必须与specific format specification匹配,但您的was不正确。
我看到你有两种格式:
2018-05-1521.02.2020我假设(1)是YYYY-MM-DD,(2)是DD.MM.YYYY。
因此,使用上面链接中显示的信息,您应该已经通过了:
format="%Y-%m-%d"format="%d.%m.%Y"注意:
%Y、%m等都是specifications-就使用-,如果有.就使用.发布于 2020-08-07 03:23:40
在这条线上。您没有定义日期字符串的格式。
# wrong
df['created_date'] = pd.to_datetime(df['created_date'])
# right
df['created_date'] = pd.to_datetime(df['created_date'], format="%Y-%m-%d")这同样适用于您要转换的另一个日期列。您定义的格式错误。实际日期列使用.作为年、月、日、例如.g之间的分隔符,而不是/。2020.08.01。它应该反映在您传递的格式中,这样它就变成了%Y.%m.%d。
# wrong
df['data_posledney_pokupki'] = pd.to_datetime(df['data_posledney_pokupki'], format="%Y/%m/%d")
# right
df['data_posledney_pokupki'] = pd.to_datetime(df['data_posledney_pokupki'], format="%Y.%m.%d")https://stackoverflow.com/questions/63290264
复制相似问题