2024-06-01 01:39:33 发布
网友
我想为列指定增量值。但是,增量不是连续的,增量所在的行取决于另一列的值。你知道吗
目前,我正在使用一个for循环,这是非常缓慢的。我得到的结果,我想如下所示。你能建议一个更具Python的方法吗?你知道吗
a=1 for index, row in df.iterrows(): df.loc[index,'trip_id'] = a if df.loc[index,'interim_tour_chk'] >= 0: a = a+1
my desired results
你可以试试这个:
df['trip_id'] = (df['interim_tour_chk'] == 0).cumsum()
说明:
(df['interim_tour_chk'] == 0)将返回一系列布尔值,以确定每个'middial\u tour\u chk'是否等于0。这是pandas's cumsum的文档。你知道吗
(df['interim_tour_chk'] == 0)
不过,您不需要使用索引:
a = 1 for idx, row in df.iterrows(): row['trip_id'] = a if row['interim_tour_chk'] == 0: a += 1
还要注意比较运算符是==而不是赋值运算符=。你知道吗
==
=
我觉得只有cumsum不能解决你的问题,在这样做之前我们需要做diff
cumsum
diff
df['trip_id']=(df.interim_tourchk.diff()<0).cumsum() df interim_tourchk trip_id 0 0 0 1 1 0 2 0 1 3 1 1 4 0 2 5 1 2 6 0 3 7 0 3 8 0 3 9 1 3 10 0 4 11 0 4 12 0 4 13 1 4
你可以试试这个:
说明:
(df['interim_tour_chk'] == 0)
将返回一系列布尔值,以确定每个'middial\u tour\u chk'是否等于0。这是pandas's cumsum的文档。你知道吗不过,您不需要使用索引:
还要注意比较运算符是
==
而不是赋值运算符=
。你知道吗我觉得只有
cumsum
不能解决你的问题,在这样做之前我们需要做diff
相关问题 更多 >
编程相关推荐