আমি একটি পান্ডাস ডেটা ফ্রেমে সমস্ত মান সন্ধান করতে চাই যেখানে সাদা স্থান (যেকোন স্বেচ্ছাসেবী পরিমাণ) থাকে এবং সেই মানগুলি NaN এর সাথে প্রতিস্থাপন করে।
কোন ধারণা কীভাবে এটি উন্নত করা যায়?
মূলত আমি এটি চালু করতে চাই:
A B C
2000-01-01 -0.532681 foo 0
2000-01-02 1.490752 bar 1
2000-01-03 -1.387326 foo 2
2000-01-04 0.814772 baz
2000-01-05 -0.222552 4
2000-01-06 -1.176781 qux
এটিতে:
A B C
2000-01-01 -0.532681 foo 0
2000-01-02 1.490752 bar 1
2000-01-03 -1.387326 foo 2
2000-01-04 0.814772 baz NaN
2000-01-05 -0.222552 NaN 4
2000-01-06 -1.176781 qux NaN
আমি নীচের কোড দিয়ে এটি পরিচালনা করতে পেরেছি, কিন্তু মানুষ এটি কুরুচিপূর্ণ। এটি পাইথোনিক নয় এবং আমি নিশ্চিত এটি প্যান্ডাসের সবচেয়ে কার্যকর ব্যবহার নয়। আমি প্রতিটি কলামের মধ্য দিয়ে লুপ করি এবং সাদা স্তরের সাথে মিলে প্রতিটি মানের একটি রেজেক্স অনুসন্ধান করে এমন একটি ফাংশন প্রয়োগ করে উত্পন্ন কলামের মুখোশের বিরুদ্ধে বুলিয়ান প্রতিস্থাপন করি।
for i in df.columns:
df[i][df[i].apply(lambda i: True if re.search('^\s*$', str(i)) else False)]=None
খালি স্ট্রিং থাকতে পারে এমন ক্ষেত্রগুলির মধ্যে দিয়ে কেবল পুনরাবৃত্তি করে এটি কিছুটা অনুকূল করা যেতে পারে:
if df[i].dtype == np.dtype('object')
তবে এটি তেমন কোনও উন্নতি নয়
এবং পরিশেষে, এই কোডটি কোনওটির সাথে লক্ষ্যযুক্ত স্ট্রিংগুলি সেট করে, যা পান্ডসের মতো কাজ করে যেমন: fillna()
তবে এটি সম্পূর্ণরূপে ভাল লাগবে যদি আমি আসলে NaN
পরিবর্তে সরাসরি sertোকাতে পারি None
।
replace
একটি রেজেক্সের সাহায্যে সক্ষম হোন ... (সম্ভবত এটি কোনও বৈশিষ্ট্য হিসাবে অনুরোধ করা উচিত)।