একটি drop
বিনামূল্যে বিকল্প সরবরাহ করার জন্য আমি @ ব্যবহারকারীর জেনেরিক সমাধানটিতে প্রসারিত করব । এটি প্রশ্নের শিরোনামের ভিত্তিতে এখানে পরিচালিত লোকদের জন্য (ওপি'র সমস্যা নয়)
বলুন আপনি নেতিবাচক মান সহ সমস্ত সারি মুছে ফেলতে চান। একটি লাইনারের সমাধান: -
df = df[(df > 0).all(axis=1)]
ধাপে ধাপে ব্যাখ্যা: -
আসুন একটি 5x5 এলোমেলো স্বাভাবিক বিতরণ ডেটা ফ্রেম তৈরি করি
np.random.seed(0)
df = pd.DataFrame(np.random.randn(5,5), columns=list('ABCDE'))
A B C D E
0 1.764052 0.400157 0.978738 2.240893 1.867558
1 -0.977278 0.950088 -0.151357 -0.103219 0.410599
2 0.144044 1.454274 0.761038 0.121675 0.443863
3 0.333674 1.494079 -0.205158 0.313068 -0.854096
4 -2.552990 0.653619 0.864436 -0.742165 2.269755
শর্তটি sণাত্মক মোছা হোক। একটি বুলিয়ান ডিএফ শর্তটি সন্তুষ্ট করে: -
df > 0
A B C D E
0 True True True True True
1 False True False False True
2 True True True True True
3 True True False True False
4 False True True False True
শর্তটি সন্তুষ্ট করার জন্য সমস্ত সারিগুলির জন্য একটি বুলিয়ান সিরিজ নোট করুন যদি সারিটির কোনও উপাদান শর্তটি ব্যর্থ হয় তবে সারিটি মিথ্যা চিহ্নিত করা হয়েছে
(df > 0).all(axis=1)
0 True
1 False
2 True
3 False
4 False
dtype: bool
শর্তের ভিত্তিতে অবশেষে ডেটা ফ্রেম থেকে সারিগুলি ফিল্টার আউট করুন
df[(df > 0).all(axis=1)]
A B C D E
0 1.764052 0.400157 0.978738 2.240893 1.867558
2 0.144044 1.454274 0.761038 0.121675 0.443863
উপরের কাজগুলি বনাম ফিল্টার ইন মুছে ফেলার জন্য আপনি এটিকে আবার ডিএফ-এ নিয়োগ করতে পারেন
df = df[(df > 0).all(axis=1)]
এটি সহজেই NaN গুলি (অ-সংখ্যাযুক্ত এন্ট্রি) সহ সারিগুলিকে ফিল্টার করার জন্য বাড়ানো যেতে পারে: -
df = df[(~df.isnull()).all(axis=1)]
এটি যেমন সরল করা যেতে পারে যেমন: কলাম E negativeণাত্মক রয়েছে এমন সমস্ত সারি মুছুন
df = df[(df.E>0)]
@ ব্যবহারকারীর drop
সমাধান কাঁচা কলাম ভিত্তিক পরিস্রাবণের চেয়ে ধীর: কেন কিছু প্রোফাইলিং পরিসংখ্যানের সাথে আমি শেষ করতে চাই : -
%timeit df_new = df[(df.E>0)]
345 µs ± 10.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit dft.drop(dft[dft.E < 0].index, inplace=True)
890 µs ± 94.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
একটি কলাম মূলত একটি হল Series
অর্থাত একটি NumPy
অ্যারের এটা কোনো খরচ ছাড়াই সূচিবদ্ধ করা করতে পারেন। অন্তর্নিহিত মেমরি সংগঠনটি কার্যকর করার গতিতে এখানে কীভাবে আগ্রহী তা আগ্রহীদের জন্য এখানে পান্ডাদের গতি বাড়ানোর জন্য একটি দুর্দান্ত লিঙ্ক :
df[[(len(x) < 2) for x in df['column name']]]
তবে আপনারটি খুব সুন্দর। আপনার সাহায্যের জন্য ধন্যবাদ!