【问题标题】:In pandas subtract date from series of date to get series of number of days在熊猫中,从日期系列中减去日期以获得天数系列
【发布时间】:2020-09-22 12:57:17
【问题描述】:

在我的 CSV 文件中,我有一列包含日期和时间,格式为 6/1/2019 12:00:00 AM。 我的要求是从所有行中删除时间,然后行将只有日期。在此之后,我必须从基准日期 1/1/2019 中减去所有行,因此该行应该只有天数。例如,如果我们从 2019 年 1 月 1 日减去 2019 年 6 月 1 日,则该行的值为 6。

我尝试了下面的代码来删除时间。

import pandas as pd
df = pd.read_csv('sample.csv', header = 0)
from datetime import datetime,date
df['date'] = pd.to_datetime(df['date']).dt.date

如何从列中的每一行中减去日期 1/1/2019 并使用 pandas 和 python 日期时间库获取天数?

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    从日期时间中删除Series.dt.floor 的时间(将它们转换为00:00:00)并减去日期时间,最后通过Series.dt.days 将输出时间增量转换为天数:

    df = pd.read_csv('sample.csv', header = 0, parse_dates=['date'])
    
    df['days'] = df['date'].dt.floor('d').sub(pd.Timestamp('2019-01-01')).dt.days
    

    示例

    df = pd.DataFrame({'date': pd.date_range('2019-01-06 12:00:00', periods=10)})
    
    df['days'] = df['date'].dt.floor('d').sub(pd.Timestamp('2019-01-01')).dt.days
    print (df)
                     date  days
    0 2019-01-06 12:00:00     5
    1 2019-01-07 12:00:00     6
    2 2019-01-08 12:00:00     7
    3 2019-01-09 12:00:00     8
    4 2019-01-10 12:00:00     9
    5 2019-01-11 12:00:00    10
    6 2019-01-12 12:00:00    11
    7 2019-01-13 12:00:00    12
    8 2019-01-14 12:00:00    13
    9 2019-01-15 12:00:00    14
    

    【讨论】:

      猜你喜欢
      • 2018-11-15
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多