পান্ডাদের সাথে ট্যাব-সীমাবদ্ধ ফাইল পড়া - উইন্ডোতে কাজ করে তবে ম্যাকের সাথে নয়


91

আমি উইন্ডোতে কোনও সমস্যা ছাড়াই পান্ডাস / পাইথনের সাথে একটি ট্যাব-সীমাবদ্ধ ডেটা ফাইল পড়ছি। ডেটা ফাইলটিতে প্রথম তিনটি লাইনে নোট থাকে এবং তারপরে একটি শিরোনাম অনুসরণ করা হয়।

df = pd.read_csv(myfile,sep='\t',skiprows=(0,1,2),header=(0))

আমি এখন আমার ম্যাক দিয়ে এই ফাইলটি পড়ার চেষ্টা করছি। (ম্যাকে পাইথন ব্যবহার করার সময় আমার প্রথমবার।) আমি নিম্নলিখিত ত্রুটিটি পেয়েছি get

pandas.parser.CParserError: Error tokenizing data. C error: Expected 1
fields in line 8, saw 39

যদি সেট error_bad_lines জন্য যুক্তি read_csv করার মিথ্যা , আমি নিম্নলিখিত তথ্য, যা শেষ সারি শেষ না হওয়া পর্যন্ত চলতে থাকে পেতে।

Skipping line 8: expected 1 fields, saw 39
Skipping line 9: expected 1 fields, saw 125
Skipping line 10: expected 1 fields, saw 125
Skipping line 11: expected 1 fields, saw 125
Skipping line 12: expected 1 fields, saw 125
Skipping line 13: expected 1 fields, saw 125
Skipping line 14: expected 1 fields, saw 125
Skipping line 15: expected 1 fields, saw 125
Skipping line 16: expected 1 fields, saw 125
Skipping line 17: expected 1 fields, saw 125
...

এনকোডিং আর্গুমেন্টের জন্য আমার কি কোনও মান নির্দিষ্ট করা দরকার ? উইন্ডোজে ফাইলটি পড়া ঠিকঠাক বলে মনে হয় বলে আমার মনে হয় না।


আপনি উভয় ওএসে পান্ডার ঠিক একই সংস্করণটি ব্যবহার করছেন? আপনি কি কিছু নমুনা ডেটা সরবরাহ করতে পারেন যা ম্যাকের সমস্যার চিত্র তুলে ধরে?
joris

সম্পর্কহীন: আপনি মধ্যে পার্থক্য বুঝতে না (0)এবং (0,)পাইথন মধ্যে? দ্রষ্টব্য: (0)হ'ল 0এবং (0,)হ'ল 0,- কমা একটি বন্ধনী তৈরি করে না, একটি খালি তৈরি করে (খালিটি ছাড়া)।
jfs

আপনি চেষ্টা করেছেন df = pd.read_table(myfile, skiprows=[0,1,2], header=0)?
প্রব্রিচ

হাই সব। পরামর্শের জন্য ধন্যবাদ। আমি একটি অস্থায়ী সমাধান তৈরি করেছি তবে এই সমস্যাটি পুনরায় দেখা এবং ভবিষ্যতে আরও ভাল সমাধানের সন্ধান করতে পারে। যদি এবং কখন করি আমি আপনার পরামর্শটি আরও খতিয়ে দেখব। আমার অস্থায়ী সমাধানটি ছিল আমার কাছে থাকা সিএসভি ফাইলটি নেওয়া (এবং এর আগে এক্সেল ব্যবহার করে সমস্যাযুক্ত ট্যাব ডিলিমেটেড ফাইলটিতে রূপান্তরিত হয়েছিল) এবং এটি গুগল ডক্সের সাথে .tsv হিসাবে সংরক্ষণ করা। আমি কেবল জিডোকস ব্যবহার করেছি কারণ এটি তখন আমার কাছে সবচেয়ে সুবিধাজনক ডক অ্যাপ্লিকেশন ছিল। এই রূপান্তর কাজ করে। পান্ডস ফাইলটি সঠিকভাবে পড়তে পেরেছিলেন, আমি বিশ্বাস করি এবং আমার বাকী কোডটিতে চলে যেতে পারেন।
ব্যবহারকারী 3062149

আপনি এখানে আপনার ম্যাকের সাথে যে সমস্যাটি দেখছেন তা আমি সন্দেহ করি লাইন টার্মিনেটর। ম্যাকের উপর তৈরি স্প্রেডশিটগুলি পাইথনের সিএসভি_ড্রেডার লাইব সহ বিভিন্ন গ্রন্থাগার সহ সকল ধরণের মজাদার আচরণের কারণ হতে পারে
ব্র্যাড স্যান্ডার্স

উত্তর:


146

সর্বাধিক ক্লুটি হ'ল সারিগুলি সমস্ত এক লাইনে ফিরছে। এটি সূচিত করে যে লাইন টার্মিনেটরগুলি অগ্রাহ্য করা হচ্ছে বা উপস্থিত নেই।

আপনি csv_reader এর জন্য লাইন টার্মিনেটর নির্দিষ্ট করতে পারেন। আপনি যদি কোনও ম্যাকের উপরে থাকেন তবে তৈরি লাইনগুলি \rলিনাক্স স্ট্যান্ডার্ডের চেয়ে শেষ হয়ে যাবে \nবা এরপরে উইন্ডোজটির সাসপেন্ডার এবং বেল্ট পদ্ধতির চেয়ে ভাল হবে \r\n

pandas.read_csv(filename, sep='\t', lineterminator='\r')

কোডেক প্যাকেজ ব্যবহার করে আপনি আপনার সমস্ত ডেটাও খুলতে পারেন। এটি ডকুমেন্ট লোডিং গতির ব্যয়ে দৃust়তা বাড়াতে পারে।

import codecs

doc = codecs.open('document','rU','UTF-16') #open for reading with "universal" type set

df = pandas.read_csv(doc, sep='\t')

4
কোডের যোগ কোডেকসটি আমাকে সহায়তা করেছিল। তারপরে আমি বুঝতে পেরেছি রিড_সিএসভিতে একটি পরামিতি রয়েছে যা একই কাজ করে। আমি এনকোডিং = 'utf-16' যুক্ত করেছি এবং এটি আমার জন্য সমস্যাটি স্থির করেছে।
মিখাইল ভেনকোভ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.