熊猫:自某个日期以来经过的天数

jer*_*iff 6 python date dataframe pandas

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

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

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

Pau*_*l H 7

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

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)
Run Code Online (Sandbox Code Playgroud)

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

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

  • 无需申请;您可以直接从列中减去时间戳以产生 timedelta64 dtype (5认同)

Sho*_*alt 5

根据杰夫的评论,这里是对已接受答案的第二个(也是最相关的)部分的更正:

df['time since'] = (df['datetime_column'] - basedate).dt.days
Run Code Online (Sandbox Code Playgroud)

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

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