简体   繁体   中英

Pandas: number of days elapsed since a certain date

I have a dataframe with a 'date' column with ~200 elements in the format yyyy-mm-dd.

I want to compute the number of days elapsed since 2001-11-25 for each of those elements and add a column of those numbers of elapsed days to the dataframe.

I know of the to_datetime() function but can't figure out how to make this happen.

Assuming your time values are in your index, you can just do this:

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)

If they're in a column, do:

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

In accordance with Jeff's comment, here's a correction to the second (and most relevant) part of the accepted answer:

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

The subtraction yields a series of type Timedelta , which can then be represented as days.

In some case you might need to pass the original column through pd.to_datetime(...) first.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM