我有一个带有' date'的数据框。具有约200个元素的列,格式为yyyy-mm-dd。
我想计算每个元素自2001-11-25以来经过的天数,并将这些经过天数的列添加到数据框中。
我知道to_datetime()函数,但无法弄清楚如何实现这一点。
答案 0 :(得分:4)
假设您的时间值在索引中,您可以这样做:
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)
答案 1 :(得分:0)
根据Jeff的评论,这是对已接受答案的第二个(也是最相关的)部分的更正:
df['time since'] = (df['datetime_column'] - basedate).dt.days
减法产生一系列类型Timedelta
,然后可以将其表示为天。
在某些情况下,您可能需要先将原始列通过pd.to_datetime(...)
。