gpt4 book ai didi

python - Pandas DF - 根据没有 for 循环的条件创建增量序列

转载 作者:行者123 更新时间:2023-11-28 22:16:51 24 4
gpt4 key购买 nike

我需要帮助解决有关创建序列的问题。

序列应基于值ID_PROJET_test 字段包含一个 bool 值,指示我们是否应该递增。

如果 ID_PROJET_test = False 则递增
如果 ID_PROJET_test = True 则不递增

例如,如果 ID_PROJET_test 包含以下系列:s1 = [0,0,1,0,1,0]

ID_PROJET 应该等于:[1,2,2,3,3,4]

如果 ID_PROJET_test 包含以下系列:s2 = [0,0,0,1,1,1,0,0]

ID_PROJET 应该等于:[1,2,3,3,3,3,4,5]

我可以使用 for 循环轻松完成:

compteur = 1
for i in range(len(df)):
if df['ID_PROJET_test']==True:
df.ID_PROJET[i] = compteur
else:
compteur += 1
df.ID_PROJET[i] = compteur

但是,我有大约 180 万条记录,速度太慢了。知道怎么做吗?

最佳答案

如果翻转 0/1 值,可以使用 cumsum():

s1 = pd.Series([0,0,1,0,1,0])

(~s1.astype(bool)).cumsum()
0 1
1 2
2 2
3 3
4 3
5 4
dtype: int64

s2 = pd.Series([0,0,0,1,1,1,0,0])

(~s2.astype(bool)).cumsum()
0 1
1 2
2 3
3 3
4 3
5 3
6 4
7 5
dtype: int64

另请注意@Jon Clement 的更紧凑:

(s1 ^ 1).cumsum()

关于python - Pandas DF - 根据没有 for 循环的条件创建增量序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51895617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com