सीएसवी आयात पांडा के दौरान पंक्तियों को छोड़ दें


98

मैं .csv फ़ाइल का उपयोग करके आयात करने का प्रयास कर रहा हूं pandas.read_csv(), हालांकि मैं डेटा फ़ाइल की दूसरी पंक्ति (अनुक्रमणिका के साथ पंक्ति = 0-अनुक्रमण के लिए) आयात नहीं करना चाहता।

मैं यह नहीं देख सकता कि इसे कैसे आयात किया जाए क्योंकि कमांड के साथ प्रयोग किए गए तर्क अस्पष्ट लगते हैं:

पांडा वेबसाइट से:

skiprows : सूची-जैसा या पूर्णांक

पंक्ति संख्या (0-अनुक्रमित) या फ़ाइल की शुरुआत में (int) छोड़ने के लिए पंक्तियों की संख्या। "

अगर मैं skiprows=1तर्कों में रखता हूं , तो यह कैसे पता चलता है कि पहली पंक्ति को छोड़ें या सूचकांक 1 के साथ पंक्ति को छोड़ें?


2
मुझे लगता है कि जैसा कि यह बताता है कि यह "सूची-जैसा या पूर्णांक" हो सकता है और फिर आपको दो विकल्प देता है (या तो पंक्तियों को छोड़ दें या प्रारंभ में # पंक्तियों को छोड़ दें) तो यदि आप इसे सूची देते हैं [1] तो यह पंक्ति को छोड़ देगा 1 (दूसरी पंक्ति)। यदि आपने इसे पूर्णांक दिया है (उदाहरण के लिए 10) तो यह पहली 10 पंक्तियों को छोड़ देगा।
Ffisegydd

1
महान जो काम किया। बहुत बहुत धन्यवाद। बस सोचा था कि यह सूचकांक और इंट के बीच अंतर कैसे होगा। [] जवाब है।
15

जवाबों:


149

आप खुद कोशिश कर सकते हैं:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
   0  1
0  1  2
1  5  6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
   0  1
0  3  4
1  5  6

हाँ धन्यवाद, मुझे बस यह जानना चाहिए कि सूचकांक को वर्ग कोष्ठक के अंदर निर्दिष्ट किया गया था []
फास्फोर

11
पायथन 3 में: from io import StringIO
डिमा लिटुआएव

^ आयात करने की कोई आवश्यकता नहीं है, यह सीधे पहुंच योग्य है pd.compat.StringIO
cs95

30

मेरे पास अभी तक टिप्पणी करने के लिए प्रतिष्ठा नहीं है, लेकिन मैं आगे के संदर्भ के लिए एल्को उत्तर में जोड़ना चाहता हूं ।

से डॉक्स :

स्किपरो: स्किप करने के लिए फाइल में पंक्तियों के लिए संख्याओं का एक संग्रह। पहली n पंक्तियों को छोड़ने के लिए एक पूर्णांक भी हो सकता है


14

सीएसवी फाइल को पढ़ते हुए स्किप्ट्स चलाते समय मुझे यही मुद्दा मिला। मैं स्किप_रो = 1 दान कर रहा था यह काम नहीं करेगा

सरल उदाहरण एक विचार देता है कि सीएसवी फ़ाइल को पढ़ते समय स्किपरो का उपयोग कैसे करें।

import pandas as pd

#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1)  ## pandas as pd

#print the data frame
df

1

इन सभी उत्तरों में एक महत्वपूर्ण बिंदु याद आता है - n'th लाइन फ़ाइल में n'th लाइन है, और डेटासेट में n'th पंक्ति नहीं है। मेरे पास एक ऐसी स्थिति है जहां मैं यूएसजीएस से कुछ एंटीक्वेट स्ट्रीम स्ट्रीम डेटा डाउनलोड करता हूं। डेटासेट के प्रमुख को '#' के साथ टिप्पणी की जाती है, उसके बाद पहली पंक्ति में लेबल होते हैं, अगली पंक्ति में एक तिथि आती है जो तिथि प्रकारों का वर्णन करती है, और डेटा को अंतिम रूप देती है। मुझे कभी नहीं पता कि कितनी टिप्पणी लाइनें हैं, लेकिन मुझे पता है कि पंक्तियों की पहली जोड़ी क्या है। उदाहरण:

----------------------------- चेतावनी -------------------- --------------

कुछ डेटा जो आपने इस अमेरिकी भूवैज्ञानिक सर्वेक्षण डेटाबेस से प्राप्त किया है

निदेशक की स्वीकृति प्राप्त नहीं हो सकती है। ... Agency_cd site_no डेटाटाइम tz_cd 139719_00065 139719_00065_cd

5 एस 15 एस 20 डी 6 एस 14 एन यूएसजीएस 08041780 2018-05-06 00:00 सीडीटी 1.98 ए

यह अच्छा होगा यदि n'th पंक्ति के साथ-साथ n'th पंक्ति को स्वचालित रूप से छोड़ने का कोई तरीका है।

एक नोट के रूप में, मैं अपने मुद्दे को ठीक करने में सक्षम था:

import pandas as pd
ds = pd.read_csv(fname, comment='#', sep='\t', header=0, parse_dates=True)
ds.drop(0, inplace=True)

-1

skip[1] दूसरी पंक्ति को छोड़ देगा, पहला नहीं।


-8

यह भी सुनिश्चित करें कि आपकी फाइल वास्तव में CSV फाइल है।उदाहरण के लिए, यदि आपके पास .xls फ़ाइल है, और बस फ़ाइल एक्सटेंशन को .csv में बदल दिया है, तो फ़ाइल आयात नहीं होगी और ऊपर त्रुटि देगी। यह देखने के लिए कि क्या यह आपकी समस्या है, फ़ाइल को एक्सेल में खोलें और यह कहेगी:

"फाइल फॉर्मेट और 'फाइलनमेक्सवीएस' का एक्सटेंशन मेल नहीं खाता। फाइल को दूषित या असुरक्षित किया जा सकता है। जब तक आप उसके स्रोत पर भरोसा नहीं करते, तब तक उसे खोलें नहीं। क्या आप इसे वैसे भी खोलना चाहते हैं?"

फ़ाइल को ठीक करने के लिए: फ़ाइल को एक्सेल में खोलें, "इस रूप में सहेजें" पर क्लिक करें, इस रूप में (उपयोग .cvs) को बचाने के लिए फ़ाइल प्रारूप चुनें, फिर मौजूदा फ़ाइल को बदलें।

यह मेरी समस्या थी, और मेरे लिए त्रुटि तय की।


10
यह आपकी समस्या हो सकती है, लेकिन इसका सवाल से कोई लेना-देना नहीं है और न ही यह इसका उत्तर देने का प्रयास करता है। यह बस कुछ अन्य अतिरिक्त समस्या की व्याख्या करता है जो आपके पास थी। आप यह भी कह सकते हैं "अपने लैपटॉप को चार्ज करने के लिए भी याद रखें, मेरी बैटरी नहीं थी और मैंने अपने सभी बदलाव खो दिए। यह मेरी समस्या थी"
जेसी रोकोमांटे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.