2016-03-31 21 views
0

"2016-01-17" biçiminde olması gereken bir tarih sütunu olan bir panda veri ortağım var.Pandalar veri ağı için dize kontrol işlevini optimize edin?

Bazen tarihler önemsiz ve '0-1274753-3' gibi bir görünüme sahip olabilir ve bu satırları kaldırmak istiyorum.

Denemem temel olarak bir dizenin tarih olup olmadığını kontrol etmek için bir işlev tanımlamak ve bunu sütundaki her girdiye uygulamak, başarısız kalan satırları atmak olmuştur. Bu, büyük bir veri karmasındaki yavaş bir süreçtir ve daha iyi bir çözüm bulmayı umuyorum.

from dateutil.parser import parse 

def is_date (string): 
    try: 
     parse (string) 
     return True 
    except ValueError: 
     return False 

df = df [df.datecol.apply(is_date)] 

cevap

1

Kullanım errors='coerce' NaN'a geçersiz tarih dizeleri dönüştürmek için: gibi

akım girişimi görünüyor.

import pandas as pd 
df = pd.DataFrame({'datecol':['2016-01-17', '0-1274753-3']}) 
df['datecol'] = pd.to_datetime(df['datecol'], errors='coerce') 
# this drops all rows which contain NaN 
df = df.dropna(axis=0, how='any') 
# alternatively, use this to drop all rows which contain NaN in the datecol column 
# df = df.loc[pd.notnull(df['datecol'])] 
print(df) 

 datecol 
0 2016-01-17 
verir: O NaN değerlerle satır düşmesi dropna() kullanımı
İlgili konular