2017-07-18 218 views
1

大家好,因此使用此以前linkPython的分組列值到一個值

我試圖使用GROUPBY整合進行值的列:

hp = hp[hp.columns[:]].groupby('LC_REF').apply(lambda x: ','.join(x.dropna().astype(str))) 
#what I have 
    22   23  24  LC_REF 
    TV  | WATCH | HELLO | 2C16 
    SCREEN | SOCCER | WORLD | 2C16 
    TEST  | HELP | RED | 2C17 
    SEND  |PLEASE |PARFAIT | 2C17 
#desired output 
22 | TV,SCREEN 
23 | WATCH, SOCCER 
24 | HELLO, WORLD 
25 | TEST, SEND 
26 | HELP,PLEASE 
27 | RED, PARFAIT 

或某種變異,其中列22 ,23,24由LC_REF組合並分組。我現在的代碼將第22列全部變成一行,第23列全部變成一行,等等。我非常親近,我能感覺到它!任何幫助表示讚賞

回答

1

看來你需要:

df = hp.groupby('LC_REF') 
     .agg(lambda x: ','.join(x.dropna().astype(str))) 
     .stack() 
     .rename_axis(('LC_REF','a')) 
     .reset_index(name='vals') 
print (df) 
    LC_REF a   vals 
0 2C16 22  TV,SCREEN 
1 2C16 23 WATCH,SOCCER 
2 2C16 24 HELLO,WORLD 
3 2C17 22  TEST,SEND 
4 2C17 23 HELP,PLEASE 
5 2C17 24 RED,PARFAIT 
+0

,現在你已經救了我兩次!謝謝! – codeninja