首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas to_datetime结果不正确(不同行的类型不同)

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

Stack Overflow用户
提问于 2020-08-07 03:09:12
回答 2查看 39关注 0票数 0

我使用to_datetime为DataFrame格式化数据,如下所示:

代码语言:javascript
复制
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是:

代码语言:javascript
复制
    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之后

代码语言:javascript
复制
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是:

代码语言:javascript
复制
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中的日期现在错误。错误在哪里?

EN

回答 2

Stack Overflow用户

发布于 2020-08-07 03:23:33

令我惊讶的是,即使在它确实有效的情况下,它也能为您工作。

您提供的format必须与specific format specification匹配,但您的was不正确。

我看到你有两种格式:

  1. 2018-05-15
  2. 21.02.2020

我假设(1)是YYYY-MM-DD,(2)是DD.MM.YYYY。

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

  1. format="%Y-%m-%d"
  2. format="%d.%m.%Y"

注意:

  • %Y、%m等都是specifications
  • Everything,否则就像写的一样,所以如果有-就使用-,如果有.就使用.
票数 1
EN

Stack Overflow用户

发布于 2020-08-07 03:23:40

在这条线上。您没有定义日期字符串的格式。

代码语言:javascript
复制
# 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。

代码语言:javascript
复制
# 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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63290264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档