python - 如何将多格式日期列转换为熊猫列中的单一通用日期格式?
问题描述
我的 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
因此,我的各种计算出错了。有没有有效的方法来转换和获得类似的格式?
解决方案
尝试:
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()
推荐阅读
- c# - 活动函数需要当前时间 - Azure Functions
- azure - 逐一或批量更新 Azure 搜索索引中的文档?
- ios - 细节视图顶部的额外空间不会消失 (SwiftUI)
- algorithm - 如何计算使序列的所有元素彼此相等所需的最小操作数
- python - ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。sklearn
- spring-boot - 更新同一实体的多个控制器方法。一种方法覆盖其他控制器方法所做的更改
- java - java - 如何在java中的树下进行前序遍历并打印0和1以对应每个节点的某些字符?
- javascript - 如何使用网络抓取获取推文的内容
- python - 描述符“日期”需要一个“datetime.datetime”对象,但收到一个“系列”(Python)
- python - 如何在 VScode 中为机器的所有用户安装 Python 扩展