gpt4 book ai didi

python - 如何识别一列的数字连续且另一列的值相同?

转载 作者:行者123 更新时间:2023-12-02 01:24:54 25 4
gpt4 key购买 nike

我有一个包含两列 AB 的 DataFrame。

我想创建一个名为 C 的新列来标识具有相同 B 值的连续 A

这是一个例子

import pandas as pd

df = pd.DataFrame({'A':[1,2,3,5,6,10,11,12,13,18], 'B':[1,1,2,2,3,3,3,3,4,4]})

我发现了类似的question ,但该方法仅识别连续的 A 而不管 B

df['C'] = df['A'].diff().ne(1).cumsum().sub(1) 

我尝试对 B 进行分组并应用如下所示的函数:

df['C'] = df.groupby('B').apply(lambda x: x['A'].diff().ne(1).cumsum().sub(1))

但是,它不起作用:TypeError:插入列的索引与框架索引不兼容。

预期输出是

A   B   C
1 1 0
2 1 0
3 2 1
5 2 2
6 3 3
10 3 4
11 3 4
12 3 4
13 4 5
18 4 6

最佳答案

让我们使用 groupby 创建一个顺序计数器, diffcumsum然后factorize重新编码计数器

df['C'] = df.groupby('B')['A'].diff().ne(1).cumsum().factorize()[0]

结果

    A  B  C
0 1 1 0
1 2 1 0
2 3 2 1
3 5 2 2
4 6 3 3
5 10 3 4
6 11 3 4
7 12 3 4
8 13 4 5
9 18 4 6

关于python - 如何识别一列的数字连续且另一列的值相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74979106/

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