代码之家  ›  专栏  ›  技术社区  ›  Bryce Frank

在中生成唯一ID的列

  •  0
  • Bryce Frank  · 技术社区  · 7 年前

    我有一个三列的数据框, bins_x , bins_y z . 我想增加一个新专栏 unique 垃圾箱 垃圾箱

    import numpy as np
    import pandas as pd
    np.random.seed(12)
    n = 1000
    height = 20
    width = 20
    bins_x = np.random.randint(1, width, size=n)
    bins_y = np.random.randint(1, height, size=n)
    z = np.random.randint(1, 500, size=n)
    
    df = pd.DataFrame({'bins_x': bins_x, 'bins_y': bins_y, 'z': z})
    print(df.sort_values(['bins_x', 'bins_y'])
    
    
    
         bins_x  bins_y    z   unique
    23        0       0  462   0
    531       0       0  199   1
    665       0       0  176   2
    363       0       1  219   0
    468       0       1  450   1
    593       0       1  385   2
    609       0       1   74   3
    663       0       1   46   4
    14        0       2  242   0
    208       0       2  381   1
    600       0       2  445   2
    865       0       2  221   3
    400       0       3  178   0
    75        0       4  281   0
    140       0       4  205   1
    282       0       4   47   2
    838       0       4  212   3
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   sacuL    7 年前

    groupby cumcount

    df['unique'] = df.groupby(['bins_x','bins_y']).cumcount()
    
    >>> df.sort_values(['bins_x', 'bins_y']).head(10)
         bins_x  bins_y    z  unique
    207       1       1    4       0
    259       1       1  313       1
    327       1       1  300       2
    341       1       1   64       3
    440       1       1  398       4
    573       1       1   96       5
    174       1       2  219       0
    563       1       2  398       1
    796       1       2  417       2
    809       1       2  167       3