2016-07-26 3 views
2

私は、郵便番号と呼ばれる列のPandasデータフレームを持っています。列はオブジェクトデータ型であり、一部の行は適切な郵便番号形式ではありません。 #####形式の郵便番号を含まない行を削除したいと思います。Pandas Dataframeの特定の行を文字列形式で取り除く

Subscriber Type  Zip Code 
0 Subscriber   94040 
1 Customer   11231 
2 Customer   11231 
3 Customer   32 
4 Customer   nil 

どうすれば簡単にできますか? フォーマットとレコードをこのような方法で比較する方法はありますか? df.drop(![ '郵便番号'] DF = #####)

+0

なぜあなたは 'df = df [df ['Zip Code']!= #####)'をしないのですか? – shivsn

答えて

4

これを試してみてください。

In [23]: df = df[df['Zip Code'].str.contains(r'^\d{5}$')] 

In [24]: df 
Out[24]: 
    Subscriber Type Zip Code 
0  Subscriber 94040 
1  Customer 11231 
2  Customer 11231 

説明:洗練された正規表現のための@Alberto Garcia-Raboso

In [22]: df['Zip Code'].str.contains(r'^\d{5}$') 
Out[22]: 
0  True 
1  True 
2  True 
3 False 
4 False 
Name: Zip Code, dtype: bool 

PSのおかげで!

+0

完璧に動作します、ありがとう! –

+1

'r '\ d {5}'は偽陽性を示します(たとえば、' 11231asdf'、 'asdf11231'、' as11231df')。あなたはより厳格な正規表現を望んでいます: 'r '^ \ d {5} $'' –

+0

@ AlbertoGarcia-Raboso、ありがとう!私は私の答えを更新しました – MaxU

関連する問題