8

我正在导入宏观经济数据的 CSV,但无法弄清楚如何让 Pandas 解释这种类型的日期。有没有办法自动完成或者我需要自己解析它?

当我要求解析器尝试时,我得到:

  File "datetime.pxd", line 133, in datetime._string_to_dts (pandas/tslib.c:31399)ValueError: Unable to parse 2002Q1
4

3 回答 3

8

由于pd.Period可以解析季度期间,您可以将其用作自定义date_parser. 然后,要将日期转换为季度的最后一天,您可以使用mapend_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
于 2013-05-26T23:48:07.293 回答
2

这里有一些东西可以帮助那些在不同列中有年份和季度的人:

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
于 2017-07-13T13:14:37.327 回答
0

它对所有各种业务日期/时间和频率都有很好的支持。但是您可能必须自己解析该特定格式。

于 2013-05-26T23:39:54.223 回答