我编写了一个lambda函数来调整数据帧,如下所示:
df = pd.DataFrame({'types':['A','A','A','A','A','B','B','B','B','B'],'disruptions':['N','N','Y','N','N','N','N','N','N','N'],'actions':[0,0,1,0,0,0,0,1,0,0],'status':[0,0,0,1,1,0,0,0,1,1],'status_2':[0,0,0,0,1,0,0,0,1,1]})
我的目标是将“status”列转换为“status 2”。逻辑是:在同一个“types”组中,如果“action”标记为1,而“disruptions”标记为“Y”,则“status_2”的下一行将为0。否则等于“状态”。你知道吗
以下是我所拥有的:
df['status_2'] = df.groupby('types').apply(lambda x: 0 if x['disruptions'].shift(1) == 'Y' & x['actions'].shift(1) == 1 else x['status'])
错误为:TypeError:无法将dtyped[float64]数组与[bool]类型的标量进行比较。你知道吗
有人能指出我做错了什么吗?你知道吗
我认为您需要通过} 转换为} ,对于
groupby
创建mask,通过^{numpy array
,然后使用^{True
值获得0
,另一个值未被触及:相关问题 更多 >
编程相关推荐