【问题标题】:How to convert multiformat date column into signle common date format in pandas column?如何将多格式日期列转换为熊猫列中的单个常见日期格式?
【发布时间】:2021-01-09 23:51:59
【问题描述】:

我的 CSV 有一列具有以下日期格式。

5/2/2010
12/2/2010
19-02-2010
26-02-2010
5/3/2010
12/3/2010
19-03-2010
26-03-2010
2/4/2010
9/4/2010

当我读取 csv 文件并打印数据框时,我得到的结果如下所示。

file_path = r'Store_sales.csv'
date_series_data = pd.read_csv(file_path)
date_series_data.head()

输出

05-02-2010      
12-02-2010      
19-02-2010  
26-02-2010  
05-03-2010

当我打印数据类型时,它会显示对象数据类型。所以我无法设置为索引。 所以我使用pd.to_datetime(date_series_data) 将对象转换为 datetime64[ns]。 但是前两个元素的日期格式更改如下

2010-05-02  
2010-12-02  
2010-02-19  
2010-02-26      
2010-03-05

因此,我的各种计算都出错了。 有没有有效的方法来转换和获得类似的格式?

【问题讨论】:

  • 你能把这个出错的计算贴出来吗?听起来您以后的计算可能旨在处理具有特定格式的字符串,而不是日期时间对象。如果是这种情况,您可能希望将日期转换回字符串 (df['col'] = df['col'].astype(str)),或者更好的是,更改这些计算以处理日期时间对象。
  • 试试pd.to_datetime(date_series_data, dayfirst=True) - 默认情况下,假定月份在前,而您输入的情况并非如此。

标签: python pandas dataframe datetime


【解决方案1】:

试试:

import pandas as pd

# Read excel file
date_series_data = pd.read_csv(filepath)

# 'Date' is the column name which has date entries
# I have set time format as YDM. You can change it to other using dt.strftime
date_type_one = pd.to_datetime(date_series_data['Date'], errors='coerce', format='%Y-%d-%m %H:%M:%S').dt.strftime('%Y-%d-%m')
date_type_two = pd.to_datetime(date_series_data['Date'], errors='coerce', format='%d-%m-%Y').dt.strftime('%Y-%d-%m')
date_series_data['Date'] = date_type_one.fillna(date_type_two)

date_series_data.head()

参考资料: Working with mixed datetime formats in pandas

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 2014-02-23
    • 2019-11-28
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2020-08-04
    • 2017-10-02
    相关资源
    最近更新 更多