【问题标题】:Python - Iterate over dataframe rows to remove time from datetime stamp [duplicate]Python - 遍历数据框行以从日期时间戳中删除时间 [重复]
【发布时间】:2019-11-07 19:41:52
【问题描述】:

我有一个数据框,其中有一列包含日期时间戳(dtype:datetime64[ns]):

         Date          Docs
0 2016-06-01 04:48:23  45
1 2016-06-01 07:24:38  56
2 2016-07-01 08:27:26  87
3 2016-07-01 08:27:49  44

我想遍历每一行以删除日期的时间部分,以获得如下的最终结果:

     Date     Docs
0 2016-06-01  45
1 2016-06-01  56
2 2016-07-01  87
3 2016-07-01  44

我该怎么做呢?

【问题讨论】:

标签: python pandas dataframe datetime


【解决方案1】:

你需要使用dt.date:

df['Date'] = df['Date'].dt.date

示例案例:

import pandas as pd
import numpy as np
rng = pd.date_range('2019-01-01 01:01:00', periods=365, freq='D')
df = pd.DataFrame(rng)
print(df[0])

看起来像:

0     2019-01-01 01:01:00
1     2019-01-02 01:01:00
2     2019-01-03 01:01:00

申请dt.date后:

df[0] = df[0].dt.date
print(df[0])

看起来像:

0      2019-01-01
1      2019-01-02
2      2019-01-03

【讨论】:

    【解决方案2】:

    使用dt.floor:

    df['Date'].dt.floor('D')
    

    df['Date'].dt.normalize()
    
    0   2016-06-01
    1   2016-06-01
    2   2016-07-01
    3   2016-07-01
    Name: Date, dtype: datetime64[ns]
    

    注意:dt.floor 返回日期时间数据类型
    dt.date 返回字符串数据类型

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2018-12-14
      • 2022-10-14
      • 2011-09-07
      • 2020-12-22
      相关资源
      最近更新 更多