在熊猫的日期时间中添加分钟列

时间:2020-04-30 18:46:59

标签: pandas dataframe datetime math

我有一个带有开始时间和操作时间的数据帧。我试图弄清楚将长度(以分钟为单位)添加到开始时间,以便确定会话的结束时间。我已经运行了相同总体思想的一些不同变体,并不断遇到相同的错误,“ 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)中读取,填充数据框,这是我正在做的一些数学运算。最初是用“开始”和“停止”时间完成的,所以我知道类似的可能。在数据集中,“长度”以分钟为单位,“开始”是日期和时间,因此日期时间是必需的。

1 个答案:

答案 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