使用pandas在python中查找两个日期之间的持续时间

时间:2017-12-14 16:43:05

标签: python python-3.x pandas

我确实有一个' input.csv'文件有两列,即' start_date'和' end_date'。我必须在日期之间添加持续时间的列,而不使用循环。我试过以下代码。

import pandas as pd
from datetime import datetime

data = pd.read_csv('data/input.csv')

# converting each data field into date format
data['start_date'] = map(lambda t:datetime.strptime(t,'%Y%M%d'), data.start_date.values)
data['end_date'] = map(lambda t:datetime.strptime(t,'%Y%M%d'), data.end_date.values)

# evaluating the duration
data['duration'] = data.end_date.values - data.start_date.values

显示以下错误

TypeError: unsupported operand type(s) for -: 'map' and 'map'

最初日期格式为YYYYMMDD,字符串格式如20170516 20180931等。 我尝试了一些替代方案,但没有工作。

3 个答案:

答案 0 :(得分:2)

data['end_date'] = pd.to_datetime(data['end_date'], format='%Y%m%d')
data['start_date'] = pd.to_datetime(data['start_date'], format='%Y%m%d')
data["duration"] = data['end_date'] - data['start_date']

这很有用。我使用了其他评论中的参考文献。

答案 1 :(得分:1)

我昨天这样做了!干杯。

data['end_date'] = pd.to_datetime(data['end_date'])
data['start_date'] = pd.to_datetime(data['start_date'])
data["duration"] = data['end_date'] - data['start_date']

to_datetime非常强大,可以演绎格式。

答案 2 :(得分:0)

更简单,你可以这样做: data["duration"][0].days 新&#34;持续时间&#34;的类型列将是Timedelta。要获得天数: int 返回天数,键入<-