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

数据结构如下:

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分组时字符串列合并的方法)