繁体   English   中英

Pandas - 识别非唯一行,对任何对进行分组

[英]Pandas - Identify non-unique rows, grouping any pairs

我试图找出一种非循环方式来识别(自动递增 int 将是理想的)每个 TDateID、GroupID 组合的非唯一行组(一个组可以包含 1 行或更多行)。

这是一个看起来像的示例 DataFrame

指数 美分 SD_YF 日期ID 组ID
10 182.5 2.1 0 0
11 182.5 2.1 0 0
12 153.5 1.05 0 1
13 153.5 1.05 0 1
14 43 11 1 2
15 43 11 1 2
4 152 21 1 2
5 152 21 1 2

我理想的输出是:

指数 美分 SD_YF 日期ID 组ID 统一标识
10 182.5 2.1 0 0 1
11 182.5 2.1 0 0 2
12 153.5 1.05 0 1 3
13 153.5 1.05 0 1 4
14 43 11 1 2 5
15 43 11 1 2 6
4 152 21 1 2 5
5 152 21 1 2 6

我用粗体#5 来提请注意索引 14、4 是如何配对在一起的。 与#6 类似。 我希望这是有道理的!

IIUC 您需要添加组号 + 每个重复的 cumcount + 1:

df['UniID'] = (df['GroupID']
 +df.groupby('GroupID').ngroup().add(1)
 +df.groupby(['GroupID', 'Cents', 'SD_YF']).cumcount()
)

输出:

   Index  Cents  SD_YF  GroupID  UniID
0     10  182.5   2.10        0      1
1     11  182.5   2.10        0      2
2     12  153.5   1.05        1      3
3     13  153.5   1.05        1      4
4     14   43.0  11.00        2      5
5     15   43.0  11.00        2      6
6      4  152.0  21.00        2      5
7      5  152.0  21.00        2      6

暂无
暂无

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

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