ন্যানের পরিবর্তে খালি স্ট্রিং হিসাবে খালি মানগুলি পড়তে পান্ডা.ড্রেড_সিএসভি পান


102

আমি কিছু সিএসভি ডেটা পড়তে পান্ডাস গ্রন্থাগারটি ব্যবহার করছি। আমার ডেটাতে, নির্দিষ্ট কলামগুলিতে স্ট্রিং রয়েছে। স্ট্রিং "nan"একটি সম্ভাব্য মান, যেমন একটি খালি স্ট্রিং। আমি স্ট্রিং হিসাবে "নান" পড়ার জন্য পান্ডাস পেতে সক্ষম হয়েছি, তবে কীভাবে এটি এনএএন হিসাবে খালি মান না পড়তে পারি তা আমি বুঝতে পারি না। এখানে নমুনা ডেটা এবং আউটপুট

One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven

>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
    One  Two  Three
0    a    1    one
1    b    2    two
2  NaN    3  three
3    d    4    nan
4    e    5   five
5  nan    6    NaN
6    g    7  seven

এটি সঠিকভাবে STRING "নান হিসেবে" নান " 'সার্চ, কিন্তু এখনও NaN যেমন ফাঁকা ঘর পড়ে। আমি পাশ করার চেষ্টা strমধ্যে convertersযুক্তি (সঙ্গে read_csv করতে converters={'One': str})), কিন্তু এটি এখনও NaN যেমন ফাঁকা ঘর পড়ে।

আমি বুঝতে পারি আমি পড়ার পরে ভ্যালেনা দিয়ে মানগুলি পূরণ করতে পারি, তবে প্যান্ডাসকে সত্যিই বলার উপায় নেই যে কোনও নির্দিষ্ট সিএসভি কলামের একটি খালি ঘরটি এনএএন এর পরিবর্তে খালি স্ট্রিং হিসাবে পড়া উচিত?


আরও সহজ সরল নোট করুন, keep_default_naনীচের আরও সাম্প্রতিক বিকল্পটি ব্যবহার করে উত্তর দিন ।
নীলাম্যাকবি

উত্তর:


57

আমি এখানে কোনও ধরণের বিকল্প যুক্ত করতে একটি টিকিট যুক্ত করেছি:

https://github.com/pydata/pandas/issues/1450

ইতিমধ্যে, result.fillna('')আপনি যা চান তা করা উচিত

সম্পাদনা: বিকাশের সংস্করণে (0.8.0 চূড়ান্ত হতে) আপনি যদি একটি খালি তালিকা নির্দিষ্ট na_valuesকরে থাকেন তবে খালি স্ট্রিংগুলি ফলাফলের ফাঁকা স্ট্রিং থাকবে


12
জন্য ডকুমেন্টেশন DataFrame.fillnaব্যবহার করে দেখুন result.fillna('', inplace=True)। অন্যথায় এটি ডেটা ফ্রেমের একটি অনুলিপি তৈরি করে।
সের্গেই ওরশানস্কি

4
এইরকম একটি পুরানো উত্তর পুনরুত্থিত করার জন্য দুঃখিত, তবে এটি কি কখনও ঘটেছে? যতদূর আমি এই গিটহাব পিআর থেকে বলতে পারি এটি কখনও সংহত না করে বন্ধ করা হয়েছিল, এবং আমি পান্ডাস সংস্করণে 0.14.x সংস্করণে অনুরোধ করা আচরণটি দেখছি না
drammock

10
রিড_সিএসভি-র জন্য ডকুমেন্টেশন এখন na_values(কলাম অনুসারে সূচিযুক্ত তালিকা বা ডিক) এবং keep_default_na( বুল) উভয়ই সরবরাহ করে । keep_default_naমান নির্দেশ করে কিনা পান্ডাস '-কে ডিফল্ট এন মান প্রতিস্থাপিত বা যোগ দিতে হবে। ওপির কোডটি বর্তমানে এই পতাকাটি হারিয়েছে বলেই কাজ করে না। এই উদাহরণস্বরূপ, আপনি ব্যবহার করতে পারেন pandas.read_csv('test.csv',na_values=['nan'], keep_default_na=False)
মাইকেল দেলগাদো

আমাকে নেতৃস্থানীয় জন্য @delgadom ধন্যবাদ keep_default_na। তবে লক্ষ করুন যে তিনি 'নান' কে ডিফল্ট হিসাবে বিবেচনা করতে চান না। আমি একটি নতুন উত্তর হিসাবে আরও সম্পূর্ণ ব্যাখ্যা যুক্ত করেছি।
নীলামকবি 7:56

আবার এই দৌড়ে। ফিক্সটি সহজ (সর্বোত্তম উত্তরটি নীচে রাখার মতো নীচে রয়েছে keep_default_na=False) তবে এতে পান্ডাস ডিফল্ট আচরণটি আইএমও খারাপ। যদি কোনও কারণে পান্ডাস রিড_সিএসভি অনুমান করে যে কোনও কলাম সংখ্যাসূচক নয় এটি খালি স্ট্রিংগুলি স্বয়ংক্রিয়ভাবে NaN এ পরিবর্তন করা উচিত নয়।
পিট্রোপ্টার

114

অন্যান্য উত্তর এবং মন্তব্য পড়ার পরেও আমি বিভ্রান্ত ছিলাম। তবে উত্তরটি এখন সহজ বলে মনে হচ্ছে, তাই আপনি এখানে যান।

পান্ডাস সংস্করণ ০.৯ (২০১২ থেকে), আপনি খালি ঘরগুলি দিয়ে সিএসভি কেবল খালি স্ট্রিং হিসাবে ব্যাখ্যা করে পড়তে পারেন keep_default_na=False:

pd.read_csv('test.csv', keep_default_na=False)

এই ইস্যুটি আরও স্পষ্টভাবে ব্যাখ্যা করা হয়েছে

এটি প্যান্ডাস সংস্করণ 0.9 ইন এর জন্য 19 আগস্ট, 2012 এ ঠিক করা হয়েছিল


4
এটি স্পষ্টভাবে সেরা উত্তর, এটি প্রথম সমাধান হিসাবে মনোনীত করা উচিত। ধন্যবাদ @nealmcb
dzof31

4
কেন এটি আরও জনপ্রিয় উত্তর নয়? গতকাল থেকে এই সমাধানটির সন্ধান করা হয়েছে। ধন্যবাদ!
আনিশ

7

এর জন্য পান্ডাস রিড_সিএসভিতে আমাদের একটি সহজ যুক্তি রয়েছে:

ব্যবহার:

df = pd.read_csv('test.csv', na_filter= False)

পান্ডস ডকুমেন্টেশন পরিষ্কারভাবে ব্যাখ্যা করে যে উপরের যুক্তি কীভাবে কাজ করে।

লিঙ্ক


দেখে মনে হচ্ছে ওপি মত করে ব্যবহার করতে চান na_values"নান" চিনতে কিন্তু বাঁক na_filterসম্পূর্ণভাবে বন্ধ করে পরাজিত করবে। এভাবে আমার উত্তর keep_default_na=False
নীলামকবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.