2013-05-29 10 views
16

मैं इंडेक्स और वैल्यू कॉलम को विभाजित किए बिना डेटाफ्रेम को टाइमसरीज़ में कनवर्ट करने का एक तरीका ढूंढ रहा हूं। कोई विचार? धन्यवाद।एक पांडस डेटाफ्रेम को एक टाइमरीज़ में कैसे परिवर्तित करें?

In [20]: import pandas as pd 

In [21]: import numpy as np 

In [22]: dates = pd.date_range('20130101',periods=6) 

In [23]: df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 

In [24]: df 
Out[24]: 
        A   B   C   D 
2013-01-01 -0.119230 1.892838 0.843414 -0.482739 
2013-01-02 1.204884 -0.942299 -0.521808 0.446309 
2013-01-03 1.899832 0.460871 -1.491727 -0.647614 
2013-01-04 1.126043 0.818145 0.159674 -1.490958 
2013-01-05 0.113360 0.190421 -0.618656 0.976943 
2013-01-06 -0.537863 -0.078802 0.197864 -1.414924 

In [25]: pd.Series(df) 
Out[25]: 
0 A 
1 B 
2 C 
3 D 
dtype: object 
+1

और आप इसके साथ क्या करना चाहते हैं? जैसे आपका वांछित आउटपुट क्या है – Jeff

+0

पीडी। टाइमसाइरीज ऑब्जेक्ट – morgan

+1

आपका डेटा 2-डी है, आप इसे 1-डी कैसे बनाना चाहते हैं? जैसे उदाहरण के लिए एक कॉलम लें, या कमीशन ऑपरेशन में सभी कॉलम में एक फ़ंक्शन लागू करें, या डेटा – Jeff

उत्तर

9

यहाँ एक संभावना

[3]: df 

Out[3]: 
        A   B   C   D 
2013-01-01 -0.024362 0.712035 -0.913923 0.755276 
2013-01-02 2.624298 0.285546 0.142265 -0.047871 
2013-01-03 1.315157 -0.333630 0.398759 -1.034859 
2013-01-04 0.713141 -0.109539 0.263706 -0.588048 
2013-01-05 -1.172163 -1.387645 -0.171854 -0.458660 
2013-01-06 -0.192586 0.480023 -0.530907 -0.872709 

In [4]: df.unstack() 
Out[4]: 
A 2013-01-01 -0.024362 
    2013-01-02 2.624298 
    2013-01-03 1.315157 
    2013-01-04 0.713141 
    2013-01-05 -1.172163 
    2013-01-06 -0.192586 
B 2013-01-01 0.712035 
    2013-01-02 0.285546 
    2013-01-03 -0.333630 
    2013-01-04 -0.109539 
    2013-01-05 -1.387645 
    2013-01-06 0.480023 
C 2013-01-01 -0.913923 
    2013-01-02 0.142265 
    2013-01-03 0.398759 
    2013-01-04 0.263706 
    2013-01-05 -0.171854 
    2013-01-06 -0.530907 
D 2013-01-01 0.755276 
    2013-01-02 -0.047871 
    2013-01-03 -1.034859 
    2013-01-04 -0.588048 
    2013-01-05 -0.458660 
    2013-01-06 -0.872709 
dtype: float64 
+1

मैंने अभी यह जवाब देखा है। क्या होगा यदि डेटाफ्रेम में केवल एक कॉलम है? 'अनस्टैक' दो स्तरीय इंडेक्स के साथ एक श्रृंखला लौटाएगा, और 'पीडी.रीरीज (डीएफ)' काम नहीं कर रहा है (यह वास्तव में अजीब बात है, क्योंकि यह कॉलम शीर्षक को वर्णों में विभाजित करता है और प्रतियों के साथ श्रृंखला को पॉप्युलेट करता है इस विभाजन के) –

+1

मैं इसे काम करने के लिए एकमात्र तरीका 'df [df.columns [0]]' के साथ है, लेकिन यह एक रूपांतरण करने का एक अप्राकृतिक है। –

14

मैं जानता हूँ कि इस खेल यहाँ लेकिन कुछ बिंदुओं को देर हो चुकी है है।

DataFrame को TimeSeries माना जाता है या नहीं, सूचकांक का प्रकार है। आपके मामले में, आपकी अनुक्रमणिका पहले से ही TimeSeries है, इसलिए आप जाने के लिए अच्छे हैं। सब शांत टुकड़ा करने की क्रिया आप एक pd.timeseries सूचकांक के साथ क्या कर सकते हैं के बारे में अधिक जानकारी के लिए,, http://pandas.pydata.org/pandas-docs/stable/timeseries.html#datetime-indexing

अब पर एक नज़र डालें दूसरों को यहाँ आने क्योंकि वे एक स्तंभ 'DateTime' है कि वे एक सूचकांक बनाना चाहते हो सकता है, जिसमें मामला जवाब सरल है

ts = df.set_index('DateTime') 
+0

@ क्रिस्टियन Ciupitu जो आप सुझाव देते हैं उसे चलाने के बाद, फिर टाइप करें (ts) यह अभी भी pandas.core.frame.DataFrame प्रिंट करता है। मेरा मानना ​​है कि हम जो चाहते हैं वह वह है जिसे हम ढूंढ रहे हैं वह टाइम्सरी ऑब्जेक्ट है, है ना? मैककिनी के अनुसार, वेस। डेटा विश्लेषण के लिए पायथन: पांडस, न्यूपी, और आईपीथॉन (किंडल स्थान 6861) के साथ डेटा Wrangling। O'Reilly मीडिया। किंडल संस्करण। ... जब हम ts.index चलाते हैं, तो इसे प्रिंट करना चाहिए: 'pandas.tseries.index.DatetimeIndex'। –

+0

@RyanChase, मैं इस जवाब के लेखक नहीं हूँ। –

+0

@EngineeredE \t जो आप सुझाते हैं उसे चलाने के बाद, फिर टाइप करें (ts) यह अभी भी pandas.core.frame.DataFrame प्रिंट करता है। मेरा मानना ​​है कि हम जो चाहते हैं वह वह है जिसे हम ढूंढ रहे हैं वह टाइम्सरी ऑब्जेक्ट है, है ना? मैककिनी के अनुसार, वेस। डेटा विश्लेषण के लिए पायथन: पांडस, न्यूपी, और आईपीथॉन (किंडल स्थान 6861) के साथ डेटा Wrangling। O'Reilly मीडिया। किंडल संस्करण। ... जब हम ts.index चलाते हैं, तो इसे प्रिंट करना चाहिए: 'pandas.tseries.index.DatetimeIndex' –

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