pandas:通过比较DataFrame的一列的DataFrame行来创建新列

c3frrgcw  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(180)

假设我有df:

pd.DataFrame({'data': [0,0,0,1,1,1,2,2,2,3,3,4,4,5,5,0,0,0,0,2,2,2,2,4,4,4,4]})

    data
0      0
1      0
2      0
3      1
4      1
5      1
6      2
7      2
8      2
9      3
10     3
11     4
12     4
13     5
14     5
15     0
16     0
17     0
18     0
19     2
20     2
21     2
22     2
23     4
24     4
25     4
26     4

我正在寻找一种方法来创建一个新的列df显示的数据项重复的数量在新的列例如:

data  new
0      0    1
1      0    2
2      0    3
3      1    1
4      1    2
5      1    3
6      2    1
7      2    2
8      2    3
9      3    1
10     3    2
11     4    1
12     4    2
13     5    1
14     5    2
15     0    1
16     0    2
17     0    3
18     0    4
19     2    1
20     2    2
21     2    3
22     2    4
23     4    1
24     4    2
25     4    3
26     4    4

我的逻辑是将行与python列表进行比较,然后创建一个新的列表。有没有一种简单的方法可以做到这一点?

r9f1avp5

r9f1avp51#

示例

df = pd.DataFrame({'data': [0,0,0,1,1,1,2,2,2,3,3,4,4,5,5,0,0,0,0,2,2,2,2,4,4,4,4]})

代码

grouper = df['data'].ne(df['data'].shift(1)).cumsum()
df['new'] = df.groupby(grouper).cumcount().add(1)

df

data   new
0   0   1
1   0   2
2   0   3
3   1   1
4   1   2
5   1   3
6   2   1
7   2   2
8   2   3
9   3   1
10  3   2
11  4   1
12  4   2
13  5   1
14  5   2
15  0   1
16  0   2
17  0   3
18  0   4
19  2   1
20  2   2
21  2   3
22  2   4
23  4   1
24  4   2
25  4   3
26  4   4

相关问题