[英]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.