【问题标题】:Calculate Date Columns in Datframe计算数据框中的日期列
【发布时间】:2020-05-13 16:06:34
【问题描述】:
我尝试计算这些列。我需要两个新列,
- 一个名为“开始时间”=日期+时间
- 一个名为“Endtime”的 = 日期 + 时间 + 时间增量
我需要它们用于 python 中的甘特图,问题在于,那个时间可能会出现多次。任何想法如何解决这个问题?
我从 Dataframe 中将它们变红并在此处出现此错误
unsupported operand type(s) for +: 'datetime.date' and 'datetime.time'
【问题讨论】:
标签:
python
pandas
dataframe
datetime
timestamp
【解决方案1】:
首先将dates和times通过Series.astype转换为字符串,然后使用to_datetime,第二列使用to_timedelta:
df = pd.DataFrame({'Date': pd.to_datetime(['06.12.2019','06.12.2019']).date,
'Time': pd.to_datetime(['17:20:10','17:20:31']).time,
'TimeDelta':['00:00:21','14:31:09']})
df['Starttime'] = pd.to_datetime(df['Date'].astype(str) + ' ' + df['Time'].astype(str))
df['Endtime'] = df['Starttime'] + pd.to_timedelta(df['TimeDelta'])
print (df)
Date Time TimeDelta Starttime Endtime
0 2019-06-12 17:20:10 00:00:21 2019-06-12 17:20:10 2019-06-12 17:20:31
1 2019-06-12 17:20:31 14:31:09 2019-06-12 17:20:31 2019-06-13 07:51:40
【解决方案2】:
尝试使用pd.to_datetime 和pd.to_timedelta:
df['Starttime'] = pd.to_datetime(df['Date'].map(str) + ' ' + df['Time'].map(str))
df['Endtime'] = df['Starttime'] + pd.to_timedelta(df['TimeDelta'])