আমার ক্ষেত্রে আমার কাছে একটি পান্ডা সিরিজ ছিল যেখানে মানগুলি অক্ষরের আকার :
Out[67]
0 (H, H, H, H)
1 (H, H, H, T)
2 (H, H, T, H)
3 (H, H, T, T)
4 (H, T, H, H)
অতএব আমি সিরিজটি ফিল্টার করতে সূচি ব্যবহার করতে পারি, তবে আমার প্রয়োজনীয় সূচক তৈরি করতে apply। আমার অবস্থা "এমন সমস্ত টিপল সন্ধান করুন যার ঠিক এক 'এইচ' রয়েছে"।
series_of_tuples[series_of_tuples.apply(lambda x: x.count('H')==1)]
আমি স্বীকার করি এটি "চেইনযোগ্য" নয় , (অর্থাত্ আমি series_of_tuplesদু'বার পুনরাবৃত্তি করবো ; আপনার অবশ্যই কোনও অস্থায়ী সিরিজটি ভেরিয়েবলের মধ্যে সংরক্ষণ করতে হবে যাতে আপনি এটিতে প্রয়োগ (...) বলতে পারেন)।
বুলিয়ান সূচক তৈরির জন্য এলিমেন্টওয়াইজ পরিচালনা করতে পারে এমন অন্যান্য পদ্ধতি (পাশাপাশি .apply(...)) থাকতে পারে।
আরও অনেক উত্তর (স্বীকৃত উত্তর সহ) শৃঙ্খলাবদ্ধ ফাংশনগুলি ব্যবহার করে যেমন:
.compress()
.where()
.loc[]
[]
এগুলি কলগুলি (ল্যাম্বডাস) গ্রহণ করে যা সিরিজগুলিতে প্রয়োগ করা হয় , সেই সিরিজের স্বতন্ত্র মানগুলিতে নয় !
অতএব যখন আমার উপরের শর্তটি / কলযোগ্য / ল্যাম্বদা ব্যবহার করার চেষ্টা করলাম তখন আমার শৃঙ্খলাগুলির সিরিজটি অদ্ভুতভাবে আচরণ করেছিল, যেমন কোনও চেইনযোগ্য ফাংশন যেমন .loc[]:
series_of_tuples.loc[lambda x: x.count('H')==1]
ত্রুটি উত্পাদন করে:
কী-এরর: 'লেভেল এইচ অবশ্যই নামের মতো হতে হবে (কিছুই নয়)'
আমি খুব বিভ্রান্ত হয়ে পড়েছিলাম তবে মনে হচ্ছে এটি সিরিজ.কাউন্ট series_of_tuples.count(...)ফাংশনটি ব্যবহার করছে যা আমি যা চাইছিলাম তা নয়।
আমি স্বীকার করি যে একটি বিকল্প ডেটা কাঠামো আরও ভাল হতে পারে:
- একটি বিভাগ ডেটাটাইপ?
- একটি ডেটাফ্রেম (টিপলের প্রতিটি উপাদান কলামে পরিণত হয়)
- স্ট্রিংগুলির একটি সিরিজ (কেবল একসাথে টিউপসকে একত্রিত করে):
এটি স্ট্রিংগুলির একটি সিরিজ তৈরি করে (অর্থাত্ টুপলকে একত্রিত করে; একক স্ট্রিংতে টিপলটিতে অক্ষরগুলিতে যোগদান করা)
series_of_tuples.apply(''.join)
সুতরাং আমি তারপর শৃঙ্খলযোগ্য ব্যবহার করতে পারেনSeries.str.count
series_of_tuples.apply(''.join).str.count('H')==1