在我的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库获取天数?
答案 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