2016-12-15 87 views
1

我有一個數據集,格式如下。Python3,列名 - 數組 - numpy或熊貓

id A B C D E 
100 1 0 0 0 0 
101 0 1 1 0 0 
102 1 0 0 0 0 
103 0 0 0 1 1 

我想將其轉換成如下:

100, A 
101, B C 
102, A 
103, D E 

我該怎麼辦呢?我嘗試過numpy argsort,但是我對Python很陌生,並且發現這很具有挑戰性。 欣賞此中的任何幫助。

python df3 = df1.set_index("cust_id").apply(lambda col: ','.join(col[lambda x: x == 1].index), axis = 1)

python df3

cust_id 
1375586      ind_cco_fin_ult1 
1050611      ind_cco_fin_ult1 
1050612 ind_deco_fin_ult1,ind_viv_fin_ult1 
dtype: object 

python df2

cust_id 
1375586      ind_cco_fin_ult1 
1050611      ind_cco_fin_ult1 
1050612 ind_ctma_fin_ult1,ind_deco_fin_ult1 
dtype: object 

python metrics.mapk(df2,df3,7)

0.82879818594104293 

```python list1 = [['ind_cco_fin_ult1'],['ind_cco_fin_ult1'],['ind_deco_fin_ult1','ind_viv_fin_ult1']] list2 = [['ind_cco_fin_ult1'],['ind_cco_fin_ult1'],['ind_ctma_fin_ult1 」, 'ind_deco_fin_ult1']

```

python metrics.mapk(list2,list1,7)

0.83333333333333337 

謝謝你很多的幫助,我可以嘗試幾個步驟。 我想測試mapk,但應用方法似乎並沒有給我真正需要的東西。

回答

2

你可以做這樣的事情:

df.set_index("id").apply(lambda row: ' '.join(row[row == 1].index), axis = 1) 

#id 
#100  A 
#101 B C 
#102  A 
#103 D E 
#dtype: object