【问题标题】:Pandas - Identify non-unique rows, grouping any pairsPandas - 识别非唯一行,对任何对进行分组
【发布时间】:2022-07-07 21:21:59
【问题描述】:

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

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

Index Cents SD_YF GroupID
10 182.5 2.1 0
11 182.5 2.1 0
12 153.5 1.05 1
13 153.5 1.05 1
14 43 11 2
15 43 11 2
4 152 21 2
5 152 21 2

我的理想输出是:

Index Cents SD_YF GroupID UniID
10 182.5 2.1 0 1
11 182.5 2.1 0 2
12 153.5 1.05 1 3
13 153.5 1.05 1 4
14 43 11 2 5
15 43 11 2 6
4 152 21 2 5
5 152 21 2 6

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 2023-04-09
      • 2012-07-08
      • 2019-09-15
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      相关资源
      最近更新 更多