我正在導入一個宏觀經濟數據的CSV文件,但一直未能弄清楚如何讓大熊貓解釋這種類型的日期。有沒有辦法自動執行或我需要自己解析它?大熊貓是否支持yyyyQp表格的季度日期(例如2013Q2)?
當我問解析器嘗試,我得到:
File "datetime.pxd", line 133, in datetime._string_to_dts (pandas/tslib.c:31399)ValueError: Unable to parse 2002Q1
我正在導入一個宏觀經濟數據的CSV文件,但一直未能弄清楚如何讓大熊貓解釋這種類型的日期。有沒有辦法自動執行或我需要自己解析它?大熊貓是否支持yyyyQp表格的季度日期(例如2013Q2)?
當我問解析器嘗試,我得到:
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
句點類將接受這種格式並理解它,但它從CSV導入數據框時似乎並不認識它。 – kdamica