python - Pandas 获取列中的数字,以根据前一行增加

标签 python python-3.x pandas

所以我有一些数据根据“代码”列中的数字对行进行分组。然而,此数据有些损坏,有时不会将前一行的最大值作为新数字,而是将其重置为 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/

相关文章:

python - 我怎么能实现类似 np.where(df[variable] in ['value1' ,'value2' ])

python - 根据带有 Groupby 的 Pandas 中的列中的值从 DataFrame 中选择连续的行

python - 将 [0] 附加到 python 中的方法有什么作用?

python - 属性错误 : 'module' object has no attribute 'reader'

python-3.x - 使用 panda 数据帧 groupby 中的百分位数删除异常值

python - invoke.context.Context 因缺少位置参数而出现奇怪的错误

python - Pandas max() 和 min() 工作,但 Mean() 给出 "No numeric types"错误

python - 如何让 Python 自动在字典中创建缺失的键/值对?

python - 比较列表的列

python - Pandas 使用格式化为表格的表格创建 Excel