मैं सांख्यिकीय प्रसंस्करण के लिए एक पांडस एचडीएफस्टोर में बड़ी मात्रा में http लॉग (80 जीबी +) आयात कर रहा हूं। यहां तक कि एक आयात फ़ाइल के भीतर भी मुझे सामग्री को बैच करने की आवश्यकता होती है क्योंकि मैं इसे लोड करता हूं। मेरी रणनीति अब तक डेटाफ्रेम में पार्स लाइनों को पढ़ने के लिए है, फिर डेटाफ्रेम को एचडीएफस्टोर में स्टोर करें। मेरा लक्ष्य है कि डेटास्टोर में एक ही कुंजी के लिए इंडेक्स कुंजी अद्वितीय है लेकिन प्रत्येक डेटाफ्रेम फिर से अपने स्वयं के इंडेक्स वैल्यू को पुनरारंभ करता है। मैं उम्मीद कर रहा था कि HDFStore.append() में डेटाफ्रेम इंडेक्स मानों को अनदेखा करने के लिए कुछ मैकेनिज्म होगा और बस मेरे एचडीएफस्टोर कुंजी के मौजूदा इंडेक्स वैल्यू में जोड़ना जारी रखें लेकिन इसे नहीं लगता है। मैं डेटाफ्रेम कैसे आयात करूं और एचडीएफस्टोर अपने मौजूदा इंडेक्स वैल्यू को बढ़ाने के दौरान उसमें निहित इंडेक्स वैल्यू को अनदेखा कर सकता हूं? प्रत्येक 10 लाइनों के नीचे नमूना कोड नीचे बैच। स्वाभाविक रूप से असली बात बड़ी होगी।एक पांडस एचडीएफस्टोर को बड़ी मात्रा में डेटा कैसे जोड़ता है और एक प्राकृतिक अद्वितीय सूचकांक प्राप्त करता है?
if hd_file_name:
"""
HDF5 output file specified.
"""
hdf_output = pd.HDFStore(hd_file_name, complib='blosc')
print hdf_output
columns = ['source', 'ip', 'unknown', 'user', 'timestamp', 'http_verb', 'path', 'protocol', 'http_result',
'response_size', 'referrer', 'user_agent', 'response_time']
source_name = str(log_file.name.rsplit('/')[-1]) # HDF5 Tables don't play nice with unicode so explicit str(). :(
batch = []
for count, line in enumerate(log_file,1):
data = parse_line(line, rejected_output = reject_output)
# Add our source file name to the beginning.
data.insert(0, source_name)
batch.append(data)
if not (count % 10):
df = pd.DataFrame(batch, columns = columns)
hdf_output.append(KEY_NAME, df)
batch = []
if (count % 10):
df = pd.DataFrame(batch, columns = columns)
hdf_output.append(KEY_NAME, df)
क्या आपने [यह उत्तर] पढ़ा है (http://stackoverflow.com/a/14268804/1240268)? –