美文网首页我爱编程
Pandas分组时字符串列合并的方法

Pandas分组时字符串列合并的方法

作者: 奥巴牛叔 | 来源:发表于2018-05-05 15:10 被阅读0次

    数据结构如下:

    In [36]: df

    Out[36]:

        0    1  2  3  4      zb5

    0  12    3  17  6  3        aa

    1  12    4  6  23  6        bb

    2  12    2  5  6  7        cc

    4  7    3  4  5  6        dd

    5  7  113  4  5  36        ee

    6  7  113  4  5  36  ac,bc,de

    合并命令如下:

    In [37]: db=df['zb5'].groupby(df[0]).aggregate(lambda x:','.join(x))

    In [38]: db

    Out[38]:

    0

    7    dd,ee,ac,bc,de

    12          aa,bb,cc

    Name: zb5, dtype: object

    形成列表命令如下:

    In [42]: dc=df[[1,2,'zb5']].groupby(df[0]).aggregate(lambda x:list(x))

    In [43]: dc

    Out[43]:

                    1          2                zb5

    0

    7  [3, 113, 113]  [4, 4, 4]  [dd, ee, ac,bc,de]

    12      [3, 4, 2]  [17, 6, 5]        [aa, bb, cc]

    分组列不作为索引,仍然作为保留的列:

    In [1]: datas=[['a',3,17,6,3,'aa'],['a',4,6,23,6,'bb'],['a',2,5,6,7,'cc'],['b',

      ...: 3,4,5,6,'dd'],['b',113,4,5,36,'ee'],['b',113,4,5,36,'ac,bc,de']]

    In [2]: import pandas as pd

    In [3]: df=pd.DataFrame(datas)

    In [4]: df

    Out[4]:

      0    1  2  3  4        5

    0  a    3  17  6  3        aa

    1  a    4  6  23  6        bb

    2  a    2  5  6  7        cc

    3  b    3  4  5  6        dd

    4  b  113  4  5  36        ee

    5  b  113  4  5  36  ac,bc,de

    In [7]: db=df.groupby(df[0],as_index=False)[5].aggregate(lambda x:','.join(x))

    In [8]: db

    Out[8]:

      0              5

    0  a        aa,bb,cc

    1  b  dd,ee,ac,bc,de

    相关文章

      网友评论

        本文标题:Pandas分组时字符串列合并的方法

        本文链接:https://www.haomeiwen.com/subject/dzterftx.html