所以我有一些数据根据“代码”列中的数字对行进行分组。然而,此数据有些损坏,有时不会将前一行的最大值作为新数字,而是将其重置为 1。
数据基本上是这样的:
Code Date
0 1 20200501
1 1 20200502
2 2 20200502
3 2 20200502
4 3 20200502
5 3 20200505
6 1 20200505
7 1 20200505
8 2 20200505
9 2 20200505
10 1 20200505
11 1 20200505
12 6 20200505
13 6 20200505
代码列中的编号已损坏,应如下所示
Code Date
0 1 20200501
1 1 20200502
2 2 20200502
3 2 20200502
4 3 20200502
5 3 20200505
6 4 20200505
7 4 20200505
8 5 20200505
9 5 20200505
10 4 20200505
11 4 20200505
12 6 20200505
13 6 20200505
有人可以帮我找到修复此数据编号的方法吗?
编辑: 编辑此内容以提供更多信息
因此数据根据数字对行进行分组。所以所有具有相同数字的东西都是一个组的一部分。代码列中的编号应该向上,从 1 开始。但是有时编号会重置回 1。所以我可能有 1-2-3-1,应该是 1-2-3-4,如果这有意义的话.
最佳答案
根据我的理解,您可以尝试使用 cummax 来确定现有值是否小于之前的最大值,并根据它添加现有值:
a = df['Code'].cummax()
s = a>df['Code']
df['New_Code'] = np.where(s,a+df['Code'],df['Code']
print(df)
Code Date New_Code
0 1 20200501 1
1 1 20200502 1
2 2 20200502 2
3 2 20200502 2
4 3 20200502 3
5 3 20200505 3
6 1 20200505 4
7 1 20200505 4
8 2 20200505 5
9 2 20200505 5
10 1 20200505 4
11 1 20200505 4
12 6 20200505 6
13 6 20200505 6
关于python - Pandas 获取列中的数字,以根据前一行增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66973691/