繁体   English   中英

使用pandas在python中解析日期到datetime

[英]Parsing dates to datetime on the fly in python using pandas

我有一个名为base_varlist2的数据base_varlist2 ,它有一些日期列,都是不同格式的字符串。 这是第一列的快照:

In [27]: print(base_varlist2.iloc[0])
completion_date_latest               07/10/2004
completion_date_original             17/05/1996
customer_birth_date_1                04/02/1963
customer_birth_date_2                       NaN
d_start                               01Feb2018
latest_maturity_date                 01/03/2027
latest_valuation_date                08/05/2004
sdate                                       NaN
startdt_def                                 NaN

如您所见,其中一些列是空的,有些则不是。

无论现有的字符串格式如何,我都需要一种动态更改这些日期时间值的方法。 有没有办法从数据框执行此操作,而无需为每列指定特定格式? 例如,我不会总是知道d_start是否为%d%b%Y格式。

数据框是由原始CSV制作的,原始CSV要大得多,并且包含许多其他列(不是日期),如文本字段和数字字段。 我正在使用read_csv方法将其引入,如下所示:

source_data = pd.read_csv(loc + 'TEST_FILE.csv')

Pandas的read_csv函数支持parse_dates参数,该参数可以是要从str转换为datetime的列名列表。

或者,您始终可以使用pandas.to_datetime转换系列,例如:

df['date'] = pandas.to_datetime(df['date'])

请注意,pandas不会假设您使用日期的格式。

不幸的是,这不起作用,需要指定每列解析日期, 文档

source_data = pd.read_csv(loc + 'TEST_FILE.csv', parse_dates=['date1','date2','date6'])
#or specify columns by positions
source_data = pd.read_csv(loc + 'TEST_FILE.csv', parse_dates=[0,1,6])

在我看来,原因是性能,也避免将数字值(如2000转换为datetimes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM