Skip to main content
 首页 » 编程设计

python之如何通过 pandas 0.19.2 中其他行的唯一对来标记行

2025年05月04日13jackei

我有一个像这样但更大的数据框 df。

  ID_0 ID_1  location 
0    a    b     1 
1    a    c     1 
2    a    b     0 
3    d    c     0 
4    a    c     0 
5    a    c     1 

我想添加一列来标识前两个。例如:

  ID_0 ID_1  location group_ID 
0    a    b     1     0 
1    a    c     1     1 
2    a    b     0     0 
3    d    c     0     2 
4    a    c     0     1 
5    a    c     1     1 

这个新列来自“a b”到 0、“a c”到 1 和“d c”到 2 的映射。

我认为第一步是

grouped  = df.groupby(['ID_0', 'ID_1']) 

但我不确定从那里去哪里。

How can you make this new column in pandas?

请您参考如下方法:

你需要GroupBy.ngroup , 0.20.2 中的新功能:

df['group_ID'] = df.groupby(['ID_0', 'ID_1']).ngroup() 
print (df) 
  ID_0 ID_1  location  group_ID 
0    a    b         1         0 
1    a    c         1         1 
2    a    b         0         0 
3    d    c         0         2 
4    a    c         0         1 
5    a    c         1         1 

df['group_ID'] = df.groupby(['ID_0', 'ID_1']).grouper.group_info[0] 
print (df) 
  ID_0 ID_1  location  group_ID 
0    a    b         1         0 
1    a    c         1         1 
2    a    b         0         0 
3    d    c         0         2 
4    a    c         0         1 
5    a    c         1         1