Python将列值分组为一个值

时间:2017-07-18 13:22:53

标签: python list python-3.x pandas

大家都这样使用过去link

我正在尝试使用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 个答案:

答案 0 :(得分: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