2012-10-16 22 views
5

एक पांडस डेटाफ्रेम में सीएसवी को पढ़ने के तरीके के बारे में बहुत सारी जानकारी, लेकिन मेरे पास जो कुछ है वह एक pyTable तालिका है और एक पांडा डेटाफ्रेम चाहता है।पंडेस में पित्टेबल्स टेबल डेटाफ्रेम

मैं अपने पांडा DataFrame को pytables स्टोर करने के लिए मिल गया है ... तो पढ़ मैं इसे वापस पढ़ना चाहते हैं, इस बिंदु पर यह करना होगा:

"kind = v._v_attrs.pandas_type" 

मैं इसे बाहर लिख सकता है सीएसवी के रूप में और इसे फिर से पढ़ा लेकिन यह मूर्खतापूर्ण लगता है। यह मैं अभी के लिए कर रहा हूँ।

मुझे पांडा में पाइटेबल ऑब्जेक्ट्स को कैसे पढ़ा जाना चाहिए? ,

उत्तर

5
import tables as pt 
import pandas as pd 
import numpy as np 

# the content is junk but we don't care 
grades = np.empty((10,2), dtype=(('name', 'S20'), ('grade', 'u2'))) 

# write to a PyTables table 
handle = pt.openFile('/tmp/test_pandas.h5', 'w') 
handle.createTable('/', 'grades', grades) 
print handle.root.grades[:].dtype # it is a structured array 

# load back as a DataFrame and check types 
df = pd.DataFrame.from_records(handle.root.grades[:]) 
df.dtypes 

खबरदार है कि आपके U2 (अहस्ताक्षरित 2-बाइट पूर्णांक) एक i8 (पूर्णांक 8 बाइट) के रूप में खत्म हो जाएगा, और तार वस्तुओं होगा, क्योंकि पांडा अभी तक जो उपलब्ध हैं dtypes की पूरी रेंज का समर्थन नहीं करता बेवकूफ सरणी के लिए।

+0

धन्यवाद लेकिन यह गैर पांडा एच 5 फ़ाइल से डेटा को पांडा एच 5 फ़ाइल में कैसे पढ़ता है? ऐसा लगता है कि यह सिर्फ एक पांडस एच 5 फ़ाइल में यादृच्छिक डेटा डालता है। मैं अपनी स्रोत तालिका को 'रिक इन टेबल के लिए' पढ़ सकता हूं: लेकिन तालिका एक पांडा एच 5 फाइल नहीं है, यह सिर्फ एक पिक्टेबल टेबल है, इसलिए यह पांडा स्रोत के रूप में विफल हो जाती है क्योंकि 'दयालु' 'pandas_type' नहीं है। –

+0

रुको मैं इसके साथ कुछ और समय बिताता हूं ... क्या आप कह रहे हैं कि मुझे बस इतना करना है कि मेरे मौजूदा पायटेबल्स टेबल पर अतिरिक्त डेटा प्रकार की जानकारी के साथ एक संरचित सरणी जोड़ें और फिर यह पांडा डीएफ में प्रवेश करेगी? मैं वास्तव में केवल pyTables के साथ काम करने के बारे में जानता हूं ... यह पत्ती वस्तु पर गुणों में डेटा प्रकार की जानकारी रखता है। अगर मेरे पास यह सही है तो पांडा दो पत्ते की वस्तुओं से कैसे जुड़ते हैं। (डेटा प्रकार की जानकारी वाला डेटा, डेटा की तालिका के साथ एक) –

+0

एनपी ग्रेड = एनपी.empty ((10,2), dtype = (('name', 'S20'), ('ग्रेड', 'u2'))) यह एक बग पायथन होना चाहिए –

5

दस्तावेज़ों में अब using the HDF5 store पर एक उत्कृष्ट अनुभाग शामिल है और cookbook में कुछ और उन्नत रणनीतियां चर्चा की गई हैं।

अब यह अपेक्षाकृत सीधा है:

In [1]: store = HDFStore('store.h5') 

In [2]: print store 
<class 'pandas.io.pytables.HDFStore'> 
File path: store.h5 
Empty 

In [3]: df = DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) 

In [4]: store['df'] = df 

In [5]: store 
<class 'pandas.io.pytables.HDFStore'> 
File path: store.h5 
/df   frame  (shape->[2,2]) 

और HDF5/pytables से पुनः प्राप्त करने के:

In [6]: store['df'] # store.get('df') is an equivalent 
Out[6]: 
    A B 
0 1 2 
1 3 4 

तुम भी query within a table कर सकते हैं।