首页 > 解决方案 > 如何创建一个从 1 开始的 ID,每次另一列的前一行为特定值时增加 1

问题描述

我正在使用 Python,我需要创建一个 Journey ID 和一个 Journey 编号。参见图片说明。每次“目的”列的前一行取值 1 时,ID 都应增加。旅程编号的作用相同,但在每个受访者 ID 内。

GezPerVer2019['JourneyID'] = np.where(GezPerVer2019['Hoofddoel'] = 1, GezPerVer2019['JourneyID'][i+1] + 1, GezPerVer2019['JourneyID'][i-1])

是我试过的。显然,我对此还不太熟练,我认为问题在于 np.where 不允许使用 [i] 指示符。

任何帮助将不胜感激。

在左边之前和在右边预期之后

标签: pythonpandasnumpy

解决方案


在这里使用boolean indexingandcumsum代替:

m = df['Purpose'] == 1
df.loc[m, 'JourneyID'] = m.cumsum()

注意=用于分配,==用于比较。与1


推荐阅读