2016-07-26 75 views
2

我有一個名爲Zip Code的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 [ '郵編']!= #####)'。 – 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 

說明:

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感謝@Alberto Garcia-Raboso爲精製正則表達式!

+0

完美地工作,謝謝! –

+1

'r'\ d {5}''給出誤報(例如:'11231asdf','asdf11231','as11231df')。你想要一個更嚴格的正則表達式:'r'^ \ d {5} $'' –

+0

@ AlbertoGarcia-Raboso,謝謝!我已經更新了我的答案 – MaxU