2013-10-06 97 views
0

我有一個多重索引序列/數據幀,ID和時間戳記爲關鍵字。此數據結構具有各種ID的每日數據。我可以使用resample函數來查看這個數據結構的月末快照嗎?採樣不同頻率的熊貓數據幀

ID ts   value 
1 2001-01-30 1 
    2001-01-31 2 
    2001-02-01 3 
2 2001-01-30 3 
    2001-01-31 2 
    2001-02-01 4 

我想這個輸出

ID ts   value 
1 2001-01-31 2 
2 2001-01-31 2 

我可以使用二次採樣函數調用來幫助我嗎?我知道我可以創建月份日期列表的末尾,並循環查看這些日期並找到這些值。但我想使用熊貓的全部功能。

回答

1

爲什麼你需要重新採樣?就在指數設定爲ts,然後切片,像這樣:

from cStringIO import StringIO 
raw = """id ts  value 
1 2001-01-30 1 
1 2001-01-31 2 
1 2001-02-01 3 
2 2001-01-30 3 
2 2001-01-31 2 
2 2001-02-01 4""" 
sio = StringIO(raw) 
df = read_csv(sio, sep=r'\s+', header=0, parse_dates=[1]) 
df.set_index('ts', inplace=True) 

切片,然後重置指數:

print df['2001-01-31'].reset_index().set_index('id') 

導致:

    ts value 
id       
1 2001-01-31 00:00:00  2 
2 2001-01-31 00:00:00  2 

如果你不在乎如果不存在月末值,則可以這樣做:

df.groupby('id', as_index=False).resample('M', how='last') 

哪給出

  id value 
ts     
2001-01-31 1  2 
2001-02-28 1  3 
2001-01-31 2  2 
2001-02-28 2  4