2013-03-25 7 views
6

को दोबारा शुरू करना मैं एक बहु-अनुक्रमणिका के साथ resample a DataFrame चाहता हूं जिसमें डेटाटाइम कॉलम और कुछ अन्य कुंजी शामिल हैं। Dataframe लगता है:एक मल्टी-इंडेक्स डेटाफ्रेम

import pandas as pd 
from StringIO import StringIO 

csv = StringIO("""ID,NAME,DATE,VAR1 
1,a,03-JAN-2013,69 
1,a,04-JAN-2013,77 
1,a,05-JAN-2013,75 
2,b,03-JAN-2013,69 
2,b,04-JAN-2013,75 
2,b,05-JAN-2013,72""") 

df = pd.read_csv(csv, index_col=['DATE', 'ID'], parse_dates=['DATE']) 
df.columns.name = 'Params' 

क्योंकि resampling केवल datatime अनुक्रमित पर अनुमति दी है, मैं unstacking अन्य सूचकांक स्तंभ में मदद मिलेगी सोचा। और वास्तव में यह करता है, लेकिन मैं इसे बाद में फिर से ढेर नहीं कर सकता।

print df.unstack('ID').resample('W-THU') 

Params  VAR1  
ID    1  2 
DATE      
2013-01-03  69 69.0 
2013-01-10  76 73.5 

लेकिन तब stacking 'आईडी' फिर से एक सूचकांक त्रुटि में परिणाम है:

print df.unstack('ID').resample('W-THU').stack('ID') 

IndexError: index 0 is out of bounds for axis 0 with size 0 

अजीब पर्याप्त, मैं दोनों के साथ अन्य स्तंभ स्तर ढेर कर सकते हैं:

print df.unstack('ID').resample('W-THU').stack(0) 

और

print df.unstack('ID').resample('W-THU').stack('Params') 

इंडेक्स-त्रुटि तब भी होती है जब मैं कॉलम स्तर दोनों को पुन: व्यवस्थित (स्वैप) करता हूं। क्या कोई इस मुद्दे को दूर करने के बारे में जानता है?

+2

मैंने इसे [github पर एक मुद्दा] (https://github.com/pydata/pandas/issues/3170) के रूप में पोस्ट किया। –

+0

धन्यवाद, मुझे यकीन नहीं था कि यह एक मुद्दा होगा या सिर्फ मुझे। लेकिन नीचे दिया गया जवाब स्पष्ट रूप से दिखाता है। –

+0

यह मास्टर में [निश्चित] (https://github.com/pydata/pandas/pull/3225) है (इसलिए आप इसे 0.11 में देखेंगे)। –

उत्तर

8

उदाहरण गैर-संख्यात्मक कॉलम 'NAME' को अनस्टैक करता है जिसे चुपचाप गिरा दिया जाता है लेकिन फिर से स्टैकिंग के दौरान समस्याएं उत्पन्न होती हैं। नीचे दिया गया कोड

print df[['VAR1']].unstack('ID').resample('W-THU').stack('ID') 
Params   VAR1 
DATE  ID 
2013-01-03 A 69.0 
      B 69.0 
2013-01-10 A 76.0 
      B 73.5 
+0

धन्यवाद! मैंने छोड़ने पर ध्यान दिया, लेकिन इसने कभी अन्य स्थितियों में कोई समस्या नहीं पैदा की, इसलिए मुझे नहीं लगता कि यह समस्या होगी। –

संबंधित मुद्दे