2017-09-19 59 views
0

我正在玩時間序列,但有很多麻煩來對齊熊貓的日期。最終,我希望能夠加入多個時間序列(每個時間序列都在一個單獨的csv文件中),但由於日期索引不匹配,因此加入不起作用。在熊貓讀取csv文件時發生日期

我的主要日期索引由函數fn_range_date()創建的,並具有格式YYYY-MM-DD,而大多數的CSV文件中的日期的格式爲DD/YY/YYYY(+時間戳)。我在read_csv中直接嘗試瞭解析器,但沒有成功。

#!/usr/bin/python3 
import pandas as pd 
import datetime 

def fn_range_date(): 
    start = datetime.date(2015, 9, 21) 
    end = datetime.date(2017, 9, 11) 
    days = pd.Series(pd.date_range(start, end, freq="W-MON")) 
    df = pd.DataFrame({'DateID': days}) 
    return df 

ind = fn_range_date() 
ind.set_index('DateID', inplace=True) 

df1 = pd.pandas.read_csv('input.csv', index_col=0, header=None).T 
df1.columns = ['DateID', 'Value'] 
df1.set_index(date, inplace=True) 

result = ind.join(df1, how='outer') 
print (result) 

我的CSV文件看起來像這樣:

Date 21/09/2015 00:00 28/09/2015 00:00 05/10/2015 00:00 12/10/2015 00:00 
Value 40,185 18,246 18,901 19,931 

如何解決這個問題?理想的日期格式應爲YYYY-MM-DD。

回答

0

我已經能夠解決這個問題。 csv文件格式尷尬,所以我首先轉置文件以便正確讀取它:

def fn_read_csv(filename): 
    pd.read_csv(filename).T.to_csv('temp_' + filename,header=False) 
    parser = lambda date: pd.datetime.strptime(date, '%d/%m/%y %H:%M:%S') 
    df = pd.pandas.read_csv('temp_' + filename, parse_dates=[0], date_parser=parser, index_col=0) 
    df.columns = [filename.replace(".csv","")] 
    df.index.rename('DateID', inplace=True) 
    os.remove('temp_' + filename) 
    return df