【问题标题】:Iterating through comparison of dates in Python Pandas通过比较 Python Pandas 中的日期进行迭代
【发布时间】:2017-03-20 22:23:14
【问题描述】:

现在我正在遍历 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)

有没有更聪明的方法来做到这一点?

【问题讨论】:

  • 能否合并两个日期时间列,删除重复项,然后排序?

标签: pandas datetime apply


【解决方案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)

【讨论】:

    【解决方案2】:

    如果可能使用 pandas/numpy,请不要像使用 (axis=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
    

    【讨论】:

    • 使用 .loc 代替 .ix 正在被弃用
    猜你喜欢
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2013-07-20
    • 1970-01-01
    • 2022-09-29
    • 2022-07-20
    相关资源
    最近更新 更多