【问题标题】:Pandas: number of days elapsed since a certain date熊猫:自某个日期以来经过的天数
【发布时间】:2014-11-22 04:54:12
【问题描述】:

我有一个带有“日期”列的数据框,其中包含约 200 个元素,格式为 yyyy-mm-dd。

我想计算每个元素自 2001 年 11 月 25 日以来经过的天数,并将这些经过天数的列添加到数据框中。

我知道 to_datetime() 函数,但不知道如何实现。

【问题讨论】:

    标签: python date pandas dataframe


    【解决方案1】:

    假设您的时间值在您的索引中,您可以这样做:

    import pandas
    
    x = pandas.DatetimeIndex(start='2014-01-01', end='2014-01-06', freq='30T')
    df = pandas.DataFrame(index=x, columns=['time since'])
    
    basedate = pandas.Timestamp('2011-11-25')
    df['time since'] = df.apply(lambda x: (x.name.to_datetime() - basedate).days, axis=1)
    

    如果它们在列中,请执行以下操作:

    df['time since'] = df['datetime_column'].apply(lambda x: (x.name.to_datetime() - basedate).days)
    

    【讨论】:

    • 无需申请;您可以直接从列中减去时间戳以产生 timedelta64 dtype
    【解决方案2】:

    根据 Jeff 的评论,以下是对已接受答案的第二部分(也是最相关的部分)的更正:

    df['time since'] = (df['datetime_column'] - basedate).dt.days
    

    减法产生一系列类型Timedelta,然后可以表示为天。

    在某些情况下,您可能需要先通过 pd.to_datetime(...) 传递原始列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2019-05-08
      • 2017-11-10
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多