2017-09-06 45 views
1

我有一個像這樣的數據框df,但要大得多。如何通過熊貓中其他行的唯一對來標記行0.19.2

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 

這種新列來自映射「AB」爲0,「交流」 1和「DC」爲2

我覺得第一階段要做到這一點

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

但我不知道該從哪裏去。

如何在熊貓中製作這個新專欄?

回答

3

你需要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 
+0

Thanks!我不知道那是存在的。你可以在熊貓0.19.2中做什麼? – eleanora

+0

這是一個非常新的功能... – jezrael

+0

我不確定我將使用的設置將有0.20.x悲傷。 – eleanora

1

這應該做的伎倆,而無需使用這是隻有在新pandas版本支持的GroupBy.ngroup

df['group_ID'] = df.groupby(['ID_0', 'ID_1']).grouper.group_info[0] 

    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 

在此SO帖子中查找更多信息:Python Pandas: How can I group by and assign an id to all the items in a group?

+1

這已經在另一個答案中得到了解答。 – Zero

+0

哦,很高興你找到了一個騙局 –

+0

Woops!當我寫這個答案時,我猜其他人已經回答了!接得好 –

相關問題