繁体   English   中英

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

[英]pandas: Create new column by comparing DataFrame rows of one column of DataFrame

假设我有 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 列表进行比较并创建一个新列表。 有没有简单的方法可以做到这一点?

例子

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM