সিএসভি আমদানি প্যান্ডাসের সময় সারিগুলি এড়িয়ে যান


99

আমি একটি .csv ফাইলটি ব্যবহার করে আমদানি করার চেষ্টা করছি pandas.read_csv(), তবে আমি ডেটা ফাইলের ২ য় সারি (0-সূচককরণের জন্য সূচক = 1 সহ সারি) আমদানি করতে চাই না।

আমি কীভাবে এটি আমদানি করব তা দেখতে পাচ্ছি না কারণ আদেশের সাথে ব্যবহৃত যুক্তিগুলি অস্পষ্ট বলে মনে হচ্ছে:

পান্ডাস ওয়েবসাইট থেকে:

skiprows : তালিকার মতো বা পূর্ণসংখ্যা

এড়ানোর জন্য সারি সংখ্যা (0-সূচীকৃত) বা ফাইলের শুরুতে (ইন্টি) এড়ানোর জন্য সারিগুলির সংখ্যা ""

যদি আমি skiprows=1যুক্তিগুলি রাখি , তবে এটি কীভাবে জানতে পারে যে প্রথম সারিটি এড়িয়ে যাবে বা সূচক 1 সহ সারিটি এড়িয়ে যাবে?


4
আমি অনুমান করব যে এটি লিখিত হিসাবে এটি "তালিকার মতো বা পূর্ণসংখ্যার" হতে পারে এবং তারপরে আপনাকে দুটি বিকল্প দেয় (হয় সারিগুলি এড়িয়ে যান বা শুরুতে # টি সারি বাদ দিন) তবে আপনি যদি তালিকাটি দেন তবে [1] এটি সারিটি এড়িয়ে যাবে 1 (দ্বিতীয় সারিতে)। আপনি যদি এটি একটি পূর্ণসংখ্যা দিয়েছিলেন (উদাহরণস্বরূপ 10) তবে এটি প্রথম 10 টি সারি এড়িয়ে যাবে।
Ffisegydd

4
দুর্দান্ত যে কাজ করেছে। অনেক ধন্যবাদ. এটি কীভাবে সূচক এবং ইন্টের মধ্যে পার্থক্য করবে তা অবাক করে দিয়েছিলেন। [] উত্তর।
thosphor

উত্তর:


150

আপনি নিজে চেষ্টা করতে পারেন:

>>> 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

হ্যাঁ ধন্যবাদ, আমার কেবল এটি জানতে হবে যে বর্ধনকারী ব্র্যাকেটের ভিতরে সূচকটি নির্দিষ্ট করা হয়েছিল []
thosphor

11
পাইথন 3 এ: from io import StringIO
ডিমা লিটুয়েভ

Import মোটেও আমদানি করার দরকার নেই, এটি সরাসরি হিসাবে অ্যাক্সেসযোগ্য pd.compat.StringIO
cs95

30

আমার এখনও মন্তব্য করার খ্যাতি নেই, তবে আমি আরও রেফারেন্সের জন্য আলকো উত্তরে যুক্ত করতে চাই

ডক্স থেকে :

স্কিপ্রো: এড়িয়ে যাওয়ার জন্য ফাইলে সারিগুলির জন্য সংখ্যার সংগ্রহ। প্রথম এন সারিগুলি এড়িয়ে যাওয়ার জন্য পূর্ণসংখ্যাও হতে পারে


14

সিএসভি ফাইলটি পড়ার সময় স্কিপ্রো চালানোর সময় আমি একই সমস্যা পেয়েছি। আমি skip_rows = 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 সারি নয়। আমার এমন পরিস্থিতি রয়েছে যেখানে আমি ইউএসজিএস থেকে কিছু পুরানো স্ট্রিম गेজ ডেটা ডাউনলোড করি। ডেটাসেটের শিরোনামটি '#' দিয়ে মন্তব্য করা হয়েছে, তার পরের প্রথম লাইনটি লেবেলগুলি রয়েছে, এর পরে একটি লাইন আসে যা তারিখের প্রকারগুলি বর্ণনা করে এবং নিজেই ডেটা শেষ করে। আমি কয়টি মন্তব্য লাইন আছে তা কখনই জানি না, তবে প্রথম সারির দু'টি কী তা আমি জানি। উদাহরণ:

----------------------------- সতর্কতা -------------------- --------------

আপনি এই মার্কিন ভূতাত্ত্বিক জরিপ ডাটাবেস থেকে প্রাপ্ত কিছু ডেটা

পরিচালকের অনুমোদন নাও থাকতে পারে। ... এজেন্সি_সিডি সাইট_ কোনও তারিখের সময় নেই tz_cd 139719_00065 139719_00065_cd

5 এস 15 এস 20 ডি 6 এস 14 এন 10 এস ইউএসজিএস 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)


-8

এছাড়াও নিশ্চিত হয়ে নিন যে আপনার ফাইলটি আসলে একটি সিএসভি ফাইল। উদাহরণস্বরূপ, যদি আপনার কাছে .xls ফাইল থাকে এবং কেবল ফাইল এক্সটেনশানটিকে .csv তে পরিবর্তন করা হয় তবে ফাইলটি আমদানি করবে না এবং উপরের ত্রুটিটি দেবে। এটি আপনার সমস্যা কিনা তা পরীক্ষা করতে এক্সেলের মধ্যে ফাইলটি খুলুন এবং এটি সম্ভবত বলবে:

"'ফাইলের নাম। সিএসভি'র ফাইল ফর্ম্যাট এবং বর্ধন মেলে না The ফাইলটি দূষিত বা অনিরাপদ হতে পারে you

ফাইলটি ঠিক করতে: এক্সেলের মধ্যে ফাইলটি খুলুন, "হিসাবে সংরক্ষণ করুন" এ ক্লিক করুন (সংরক্ষণ করুন .cvs) সংরক্ষণের জন্য ফাইল ফর্ম্যাটটি চয়ন করুন, তারপরে বিদ্যমান ফাইলটি প্রতিস্থাপন করুন।

এটি আমার সমস্যা ছিল এবং আমার জন্য ত্রুটিটি স্থির করে দিয়েছে।


10
এটি আপনার সমস্যা হতে পারে, তবে এটির প্রশ্নের সাথে কোনও সম্পর্ক নেই বা এটির উত্তর দেওয়ার চেষ্টা করে না। এটি কেবল আপনার কিছু অন্যান্য অতিরিক্ত সমস্যাটি ব্যাখ্যা করেছে। আপনি আরও বলতে পারেন "আপনার ল্যাপটপটি চার্জ করতেও মনে আছে, আমার ব্যাটারি ছিল না এবং আমি আমার সমস্ত পরিবর্তন হারিয়ে
ফেলেছিলাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.