通过比较Python Pandas中的日期来迭代

时间:2017-03-20 22:23:14

标签: pandas datetime apply

现在我正在迭代一个pandas数据框来修补与datetime列的数据不一致,但运行时是残酷的。

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)

有更聪明的方法吗?

2 个答案:

答案 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)

答案 1 :(得分:0)

如果可能使用pandas / numpy,请不要像使用for(轴= 1)那样使用for循环。请尝试以下方法。也应该为约会工作。

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