以大熊猫为单位,从日期系列中减去日期以得到天数系列

时间:2020-09-22 12:57:17

标签: python pandas datetime

在我的CSV文件中,我有一列带有日期和时间的列,格式为6/1/2019 12:00:00 AM。 我的要求是从所有行中删除时间,然后行将只有日期。此后,我必须从基准日期1/1/2019中减去所有行,因此该行应该只有天数。例如,如果我们从1/1/2019中减去6/1/2019,则该行的值为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 datetime库获取天数?

1 个答案:

答案 0 :(得分:0)

从日期时间中删除时间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