2017-03-20 2 views
2

Im Moment bin ich über einen Pandas-Datenrahmen iterieren, um Dateninkonsistenzen mit datetime Spalten zu patchen, aber die Laufzeit ist brutal.Iterating durch den Vergleich von Daten in Python Pandas

def fix(row): 
     return row.datetime_column2 if row.datetime_column1 > row.datetime_column2 else row.datetime_column1 

df['datetime_column1'] = df.apply(fix, axis = 1) 

Gibt es einen klügeren Weg, dies zu tun?

+0

Können Sie die beiden Datetime-Spalten kombinieren, entfernen Sie die Duplikate und sortieren Sie dann? –

Antwort

1

IIUC Sie diesen vektorisiert Ansatz verwenden:

df['datetime_column1'] = \ 
    np.where(df['datetime_column1'] > df['datetime_column2'], 
      df['datetime_column2'], 
      df['datetime_column1']) 

oder:

df['datetime_column1'] = df[['datetime_column1','datetime_column2']].min(1) 
0

Wenn möglich mit Pandas/numpy, verwenden Sie nicht für Schleifen, wie Sie mit tun (Achse = 1) . Versuche Folgendes. Sollte auch für Termine arbeiten.

df=pd.DataFrame(data={'column_1':[1,3,5,5],'column_2':[0,4,1,6] }) 
df.loc[df.column_1>df.column_2, 'column_1'] = df.column_2 
+3

Verwenden Sie stattdessen '.loc', da' .ix' veraltet ist –