द्वारा पांडा में पंक्तियों को फ़िल्टर करने के लिए कैसे करें मैं कॉलम में से किसी एक पर रेगेक्स का उपयोग करके डेटाफ्रेम को साफ़ रूप से फ़िल्टर करना चाहता हूं।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
मैं उन है कि एक regex का उपयोग कर f
साथ शुरू करने के लिए पंक्तियों को फ़िल्टर करना चाहते हैं। सबसे पहले जाएं:
In [213]: foo.b.str.match('f.*')
Out[213]:
0 []
1 ()
2 ()
3 []
यह बहुत उपयोगी नहीं है।
In [229]: foo[foo.b.str.match('(f.*)').str.len() > 0]
Out[229]:
a b
1 2 foo
2 3 fat
मुझे कृत्रिम रूप से हालांकि regex में एक समूह डाल बनाता है, और की तरह हो सकता है नहीं लगता है कि:
In [226]: foo.b.str.match('(f.*)').str.len() > 0
Out[226]:
0 False
1 True
2 True
3 False
Name: b
तो मैं तब तक मेरी प्रतिबंध कर सकता है: हालांकि इस मुझे मेरे बूलियन सूचकांक मिल जाएगा जाने के लिए साफ रास्ता। क्या ऐसा करने के लिए इससे अच्छा तरीका है? बजाय
आप regexes के लिए विवाहित नहीं कर रहे हैं, 'foo [foo.b.str.startswith ("f")] 'काम करेगा। – DSM
आईएमएचओ मुझे लगता है कि 'foo [foo.b.str.match (' (f। *) ') Str.len()> 0]' एक बहुत अच्छा पर्याप्त समाधान है! प्रारंभिक से अधिक अनुकूलन और उपयोगी क्योंकि यह इसमें regex की बहुमुखी प्रतिभा पैक करता है। –