是否有一种基于另一列的值来增加列的值的pythonic方法?

2024-06-01 01:39:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为列指定增量值。但是,增量不是连续的,增量所在的行取决于另一列的值。你知道吗

目前,我正在使用一个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


Tags: 方法iniddfforindexif增量
3条回答

你可以试试这个:

df['trip_id'] = (df['interim_tour_chk'] == 0).cumsum()

说明:

(df['interim_tour_chk'] == 0)将返回一系列布尔值,以确定每个'middial\u tour\u chk'是否等于0。这是pandas's cumsum的文档。你知道吗

不过,您不需要使用索引:

a = 1
for idx, row in df.iterrows():
    row['trip_id'] = a
    if row['interim_tour_chk'] == 0:
        a += 1

还要注意比较运算符是==而不是赋值运算符=。你知道吗

我觉得只有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

相关问题 更多 >