首页 > 解决方案 > 添加测量两个任务之间时间差的列

问题描述

我想添加另一列来衡量一个特定任务(即“播种”)中每项任务的时间(以天为单位)。

数据看起来像这样

此代码适用于单个 fld_id 并以第一行作为参考:#adding a column for : start day of each task wrt to first start date

df["PastTime"] = df['ssn_start_utc'] - df['ssn_start_utc'][0]

结果列如下所示

但我有多个fld_id,每个都有许多其他任务,在其中播种。我需要添加一个过去时间列,该列测量播种任务与特定于该特定领域的其他任务之间的时间差。 期望的输出: df = pd.DataFrame({'ssn_start_utc':pd.date_range('1/1/2011', periods=6, freq='D'), 'fld_id':[100,100,100,101,101,101], 'task_name': ['sowing','fungicide','insecticide','combine',''combine','sowing'], 'pasttime' :[ 0 days, 1 days, 2 days, 3 days, -1 days, 0 days] })

我尝试过使用 groupby:

df['pasttime'] = df.groupby(['fld_id'])['ssn_start_utc'].transform(

df['ssn_start_utc'] - df.loc[df['name']=='sowing','ssn_start_utc'].values[0]) ```

但它显示 TypeError: 'Series' 对象是可变的,因此它们不能被散列

标签: pythonpandasdataframe

解决方案


推荐阅读