我有一个带有开始时间和操作时间的数据帧。我试图弄清楚将长度(以分钟为单位)添加到开始时间,以便确定会话的结束时间。我已经运行了相同总体思想的一些不同变体,并不断遇到相同的错误,“ timedelta分钟组件的不受支持的类型:系列”。代码摘录如下:
data= {'Name': ['John', 'Peter'],
'Start' : [2, 2],
'Length': [120, 90],
}
df = pd.DataFrame.from_records(data)
df['Start'] = pd.to_datetime(df['Start'])
df['Length'] = pd.to_datetime(df['Length'])
df["tdiffinmin"] = df['Start'].apply(lambda x: x + pd.DateOffset(minutes = df["Length"]))
我还尝试了以下方法作为进行此数学运算的其他方法,并不断收到类似的错误。
df["tdiffinmin"] = df['Start'].apply(lambda x: x -pd.DateOffset(minutes = df["Length"]))
df["tdiffinmin"] = (df['Start']. + timedelta(minutes = df["Length"])).dt.total_seconds() / 60
df['tdiffinmin'] = df['Start'] - pd.DateOffset(minutes = df["Length"])
完整代码从数据集(Excel工作表或CSV)中读取,填充数据框,这是我正在做的一些数学运算。最初是用“开始”和“停止”时间完成的,所以我知道类似的可能。在数据集中,“长度”以分钟为单位,“开始”是日期和时间,因此日期时间是必需的。
答案 0 :(得分:0)
您应该将Length
转换为timedelta
,而不是datetime
:
df['Start'] = pd.to_datetime(df['Start'])
df['Length'] = pd.to_timedelta(df['Length'], unit='min')
df['tdiffinmin'] = df['Start'] + df['Length']
输出:
Length Name Start tdiffinmin
0 02:00:00 John 1970-01-01 00:00:00.000000002 1970-01-01 02:00:00.000000002
1 01:30:00 Peter 1970-01-01 00:00:00.000000002 1970-01-01 01:30:00.000000002