我有一个像这样但更大的数据框 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
