我有見底到時間序列數據的一些分層數據看起來是這樣的:重採樣在一個多指標的熊貓
df = pandas.DataFrame(
{'value_a': values_a, 'value_b': values_b},
index=[states, cities, dates])
df.index.names = ['State', 'City', 'Date']
df
value_a value_b
State City Date
Georgia Atlanta 2012-01-01 0 10
2012-01-02 1 11
2012-01-03 2 12
2012-01-04 3 13
Savanna 2012-01-01 4 14
2012-01-02 5 15
2012-01-03 6 16
2012-01-04 7 17
Alabama Mobile 2012-01-01 8 18
2012-01-02 9 19
2012-01-03 10 20
2012-01-04 11 21
Montgomery 2012-01-01 12 22
2012-01-02 13 23
2012-01-03 14 24
2012-01-04 15 25
我想執行每個城市的時間重新取樣,所以像
df.resample("2D", how="sum")
將輸出
value_a value_b
State City Date
Georgia Atlanta 2012-01-01 1 21
2012-01-03 5 25
Savanna 2012-01-01 9 29
2012-01-03 13 33
Alabama Mobile 2012-01-01 17 37
2012-01-03 21 41
Montgomery 2012-01-01 25 45
2012-01-03 29 49
原樣,df.resample('2D', how='sum')
讓我
TypeError: Only valid with DatetimeIndex or PeriodIndex
不夠公平,但我有點期待這個工作:
>>> df.swaplevel('Date', 'State').resample('2D', how='sum')
TypeError: Only valid with DatetimeIndex or PeriodIndex
在這一點我真的很運行的想法......是有一些方法棧和出棧的威力能夠幫助我嗎?
謝謝 - 那當然可以做這個工作,但是那個groupby逼着我們重新計算我們在分級索引中已經建立的關係。 有沒有辦法做到這一點,我們已經在我們的分層索引建立的分組,或者是層次索引只是不打算用於這種事情? –
對不起,我沒有足夠的經驗與熊貓說。以上是比解決方案更多的解決方法。 'df.reset_index'可能是一個緩慢的操作,如果沒有它,這可能會更好。 – unutbu
另一種方法是在重新採樣之前拆除州和城市列,但我懷疑這是否更有效。 –