Python3,列名 - 数组 - numpy或熊猫
问题描述:
我有一个数据集,格式如下。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,但应用方法似乎并没有给我真正需要的东西。
答
你可以做这样的事情:
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