2017-03-20 59 views
2

现在我正在遍历熊猫数据框来修补与日期时间列的数据不一致,但运行时是残酷的。通过比较Python中的日期进行迭代熊猫

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) 

有没有一种更聪明的办法做到这一点?

+0

你能结合两个日期时间列,删除重复,然后排序吗? –

回答

1

IIUC则可以使用此方法矢量:

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

或:

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

如果可能的话与熊猫/ numpy的,如同你不使用for循环(轴= 1) 。尝试以下操作。也应该为日期工作。

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

使用'.loc'代替'.ix'越来越被弃用 –