मैं कॉलम में से किसी एक पर regex का उपयोग करके डेटाफ़्रेम को साफ़ करना चाहूंगा।
एक आकस्मिक उदाहरण के लिए:
In [210]: foo = pd.DataFrame({'a' : [1,2,3,4], 'b' : ['hi', 'foo', 'fat', 'cat']})
In [211]: foo
Out[211]:
a b
0 1 hi
1 2 foo
2 3 fat
3 4 cat
मैं उन पंक्तियों को फ़िल्टर करना चाहता हूं जो fएक रेगेक्स का उपयोग करके शुरू होती हैं । पहले जाओ:
In [213]: foo.b.str.match('f.*')
Out[213]:
0 []
1 ()
2 ()
3 []
यह बहुत उपयोगी नहीं है। हालाँकि इससे मुझे मेरा बूलियन इंडेक्स मिलेगा:
In [226]: foo.b.str.match('(f.*)').str.len() > 0
Out[226]:
0 False
1 True
2 True
3 False
Name: b
इसलिए मैं तब अपना प्रतिबंध लगा सकता था:
In [229]: foo[foo.b.str.match('(f.*)').str.len() > 0]
Out[229]:
a b
1 2 foo
2 3 fat
हालांकि मुझे कृत्रिम रूप से एक समूह को रेगेक्स में डाल दिया गया है, और ऐसा लगता है कि शायद जाने के लिए स्वच्छ रास्ता नहीं है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?
foo[foo.b.str.match('(f.*)').str.len() > 0]है कि एक बहुत अच्छा समाधान है! शुरू से ही अधिक अनुकूलन और उपयोगी है क्योंकि यह इसमें रेगेक्स की बहुमुखी प्रतिभा को पैक करता है।
foo[foo.b.str.match('f.*')]मेरे लिए 0.24.2 पांडा में काम करती है।
foo[foo.b.str.startswith("f")]तो काम करेंगे।