我正在导入宏观经济数据的 CSV,但无法弄清楚如何让 Pandas 解释这种类型的日期。有没有办法自动完成或者我需要自己解析它?
当我要求解析器尝试时,我得到:
File "datetime.pxd", line 133, in datetime._string_to_dts (pandas/tslib.c:31399)ValueError: Unable to parse 2002Q1
由于pd.Period
可以解析季度期间,您可以将其用作自定义date_parser
. 然后,要将日期转换为季度的最后一天,您可以使用map
和end_time
属性:
import pandas as pd
text = '''\
date val
2013Q2 100
2013Q3 120
'''
filename = '/tmp/data'
with open(filename, 'w') as f:
f.write(text)
df = pd.read_table(filename, sep='\s+', date_parser=pd.Period, parse_dates=[0])
df['date'] = df['date'].map(lambda x: x.end_time.date())
print(df)
# date val
# 0 2013-06-30 100
# 1 2013-09-30 120
这里有一些东西可以帮助那些在不同列中有年份和季度的人:
year quarter foo
1994 q1 10
1994 q3 20
1995 q1 30
1995 q3 40
parse_dates
论点read_csv
只是有效。这很酷:
>>> pd.read_csv('bar.csv', parse_dates={'period':['year', 'quarter']})
period foo
1994 q1 10
1994 q3 20
1995 q1 30
1995 q3 40
它对所有各种业务日期/时间和频率都有很好的支持。但是您可能必须自己解析该特定格式。