2016-03-30 12 views
4

Wenn Daten in einem Pandas DataFrame fehlen, funktioniert die Indizierung nicht so, wie ich es erwarten würde.Pandas Dataframe von Daten mit fehlender Datenauswahl wirkt seltsam

import pandas as pd 
from datetime import datetime 

df = pd.DataFrame({'a' : [datetime(2011, 1, 1), datetime(2013, 1, 1)], 
        'b' : [datetime(2010, 1, 1), datetime(2014, 1, 1)]}) 
df > datetime(2012, 1, 1) 

funktioniert wie erwartet:

a  b 
0 False False 
1 True True 

aber wenn es ein fehlender Wert ist

none_df = pd.DataFrame({'a' : [datetime(2011, 1, 1), datetime(2013, 1, 1)], 
         'b' : [datetime(2010, 1, 1), None]}) 
none_df > datetime(2012, 1, 1) 

die Auswahl gibt alle wahre

a  b 
0 True True 
1 True True 

Bin ich etwas falsch? Ist das das gewünschte Verhalten?

Python 3.5 64bit, Pandas 0.18.0 Windows 10

Antwort

3

Ich bin damit einverstanden, dass das Verhalten ungewöhnlich ist.

Dies ist eine Behelfslösung Lösung:

>>> df.apply(lambda col: col > datetime(2012, 1, 1)) 
     a  b 
0 False False 
1 True False