【问题标题】:Changing A value on Time Column with Python/Pandas使用 Python/Pandas 更改时间列上的值
【发布时间】:2022-01-13 09:33:27
【问题描述】:

我有一个包含 +10K 行的数据框,前 4 行如下图所示:

如您所见,小时可能会有所不同,我试图通过“for”循环仅将小时值替换为“00”,但这需要一段安静的时间。代码是:

for i in range(0,len(task_df)):
    task_df["TARGET_END_DATE"].iloc[i]=pd.datetime(year=task_df["TARGET_END_DATE"].iloc[i].year,
                                                month=task_df["TARGET_END_DATE"].iloc[i].month,
                                                day=task_df["TARGET_END_DATE"].iloc[i].day,
                                                hour=0,
                                                minute=0)

有没有更快的方法?

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    如果只需要00 小时解决方案,Series.dt.floor 会更简单/更快:

    task_df["TARGET_END_DATE"] = task_df["TARGET_END_DATE"].dt.floor('d')
    

    如果需要几个小时,例如10:00添加:

    task_df["TARGET_END_DATE"] = (task_df["TARGET_END_DATE"].dt.floor('d') + 
                                    pd.Timedelta(10, 'hour'))
    

    【讨论】:

    • 第二次推荐有用,希望不要忘记。谢谢
    【解决方案2】:

    你可以使用:

    task_df["TARGET_END_DATE"].dt.normalize()
    

    【讨论】:

      猜你喜欢
      • 2022-12-12
      • 2017-06-12
      • 2015-04-03
      • 2021-03-08
      • 2020-12-05
      • 2016-01-26
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      相关资源
      最近更新 更多