我确实有一个' 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等。 我尝试了一些替代方案,但没有工作。
答案 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
新"持续时间"的类型列将是Timedelta。要获得天数:
int
返回天数,键入<-