python - 添加测量两个任务之间时间差的列
问题描述
我想添加另一列来衡量一个特定任务(即“播种”)中每项任务的时间(以天为单位)。
此代码适用于单个 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' 对象是可变的,因此它们不能被散列
解决方案
推荐阅读
- vb.net - 注册表双字值在vb中更改
- sql - 比较 2 条记录并在 POSTGRESQL 中使用 YES 或 NO 更新新字段
- javascript - 使用 React Firebase 添加到收藏夹时出现问题
- typescript - 如何在nestjs中创建rest api?
- sql - Clickhouse LEFT JOIN 部分匹配(或子选择)
- kubernetes - 在 Traefik 2.1.6 中添加新入口点时入口点“xxx”不存在
- mongodb - MongoDB、GraphQL 和 ISODate 类型
- java - SWIG (Java):如何将带有回调函数的结构从 Android 应用程序传递给 C++?
- android - 如何在颤动中添加或减去两个日期选择器?
- msbuild - (Wix) MSI 卸载非常慢。日志显示缓慢是删除快捷方式时