2016-09-09 8 views
6

मैं pandas.read_html का उपयोग कर एक xlm फ़ाइल पढ़ रहा था और काम करता है लगभग पूर्ण का समर्थन नहीं, समस्या यह है कि फ़ाइल डॉट्स के बजाय दशमलव विभाजक (read_html में डिफ़ॉल्ट) के रूप में अल्पविरामों है।pandas.read_html दशमलव अल्पविराम

मैं आसानी से एक फ़ाइल में डॉट्स द्वारा कॉमा को प्रतिस्थापित कर सकता हूं, लेकिन मेरे पास उस कॉन्फ़िगरेशन के साथ लगभग 200 फाइलें हैं। pandas.read_csv के साथ आप दशमलव विभाजक को परिभाषित कर सकते हैं, लेकिन मुझे नहीं पता कि pandas.read_html में आप केवल हजार विभाजक को परिभाषित कर सकते हैं।

इस मामले में कोई मार्गदर्शन ?, पांडा द्वारा खुलने से पहले अल्पविराम/डॉट प्रतिस्थापन को स्वचालित करने का एक और तरीका है? अग्रिम धन्यवाद!

+0

तो अपने आपकी फ़ाइल में 1000.21 1000,21 है? – zhqiat

+0

@zhqiat वास्तव में इसकी '1.000,21' है, इसमें हजारों विभाजक –

उत्तर

2

धन्यवाद @zhqiat। मुझे लगता है कि pandas संस्करण 0.19 में समस्या को हल करेगा। दुर्भाग्य से मुझे इसे पूरा करने का एक आसान तरीका नहीं मिला। मुझे पांडो को अपग्रेड करने के लिए एक ट्यूटोरियल मिला लेकिन ubuntu (winXP उपयोगकर्ता) के लिए।

मैं अंत में वैकल्पिक हल चुना है, का उपयोग करते हुए विधि तैनात here, मूल रूप से pandas.Series

result[col] = result[col].apply(lambda x: x.str.replace(".","").str.replace(",",".")) 

की एक संख्यात्मक प्रकार के सभी स्तंभों, एक के बाद एक, परिवर्तित मुझे पता है कि इस समाधान सबसे अच्छा नहीं है, लेकिन काम करता है। धन्यवाद

3

read_html

def read_html(io, match='.+', flavor=None, header=None, index_col=None, 
       skiprows=None, attrs=None, parse_dates=False, 
       tupleize_cols=False, thousands=',', encoding=None, 
       decimal='.', converters=None, na_values=None, 
       keep_default_na=True): 

समारोह हेडर के स्रोत कोड को देखते हुए का तात्पर्य एक दशमलव विभाजक समारोह कॉल में उपलब्ध नहीं है।

प्रलेखन में आगे नीचे ऐसा लगता है कि इसे संस्करण 0.1 9 में जोड़ा गया था (इसलिए प्रयोगात्मक शाखा के थोड़ा आगे)। क्या आप अपने पांडा को अपग्रेड कर सकते हैं?

दशमलव: str, default '।' दशमलव बिंदु के रूप में पहचानने के लिए चरित्र (उदाहरण के लिए यूरोपीय 'डेटा के लिए ',' का उपयोग करें)। .. संस्करणबद्ध :: 0.1 9.0

+0

भी हैं, अभी मैं अंतिम स्थिर संस्करण (एनाकोंडा में डिफ़ॉल्ट) का उपयोग कर रहा हूं। मैं 0.1 9 में अपग्रेड करने का प्रयास करूंगा और देख सकता हूं कि यह काम करता है या नहीं। पीडी .__ संस्करण__ u'0.18.1 ' जैसे ही मैं कोशिश करता हूं, मैं वापस आऊंगा –

0

मैं पांडा 0.1 9 का उपयोग कर रहा हूं लेकिन यह अभी भी संख्याओं को सही ढंग से परिवर्तित करने में विफल रहता है।

उदाहरण के लिए:

a=pd.read_html(r.text,thousands='.',decimal=',') 

के रूप में 140,140 (नाव) मूल्य "1.401,40" एक तालिका सेल में पहचान लेंगे।

मैं के रूप में 'पाब्लो ए' एक ऐसी ही समाधान का उपयोग, बस नेन मूल्यों के लिए सही करने:

def to_numeric_comma(series): 
    new=series.apply(lambda x: str(x).replace('.','').replace(',','.')) 
    new=pd.to_numeric(new.replace('nan',pd.np.nan)) 
    return new 
संबंधित मुद्दे