আমার ক্ষেত্রে আমার কাছে একটি পান্ডা সিরিজ ছিল যেখানে মানগুলি অক্ষরের আকার :
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