2016-12-07 3 views
1

Ich habe datenframe. Es ist ein TeilPandas: filter datenframe mit typ der daten

 member_id event_duration    domain   category 
0   299819    17 element.yandex.ru    None 
1   299819    0  mozilla.org   Программы 
2   299819    4   vbmail.ru    None 
3   299819    aaa   vbmail.ru    None 

Wie Filter df mit Typ? Normalerweise mache ich es mit str.contains, vielleicht ist es normal, irgendwelche wie df[df.event_duration.astype(int) == True] zu spezifizieren?

+0

Sind alle anderen Werte gültig? Wie in dir hast du nirgendwo "NaN"? du könntest 'df [pd.to_numeric (df ['event_duration'], errors = 'coerce') .notnull()]' – EdChum

Antwort

1

Wenn alle anderen Zeilenwerte gelten als in sie nicht NaN sind, dann können Sie die Spalte konvertieren to_numeric in numerische verwenden, werden diese Zeichenfolgen konvertieren NaN, können Sie diese Filter notnull mit aus:

In [47]: 
df[pd.to_numeric(df['event_duration'], errors='coerce').notnull()] 

Out[47]: 
    member_id event_duration    domain category 
0  299819    17 element.yandex.ru  None 
1  299819    0  mozilla.org Программы 
2  299819    4   vbmail.ru  None 

Dies:

df[df.event_duration.astype(int) == True] 

wird als Zeichenfolge nicht funktionieren eine ValueError Ausnahme als die Zeichenfolge erhöhen nicht

umgewandelt werden kann 01.235.
1

Sie können Regex auch verwenden.

df[df["event_duration"].str.contains(r"^\d+$")] 
Verwandte Themen