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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas分组时字符串列合并的方法相关的知识,希望对你有一定的参考价值。

参考技术A 数据结构如下:

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分组时字符串列合并的方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Pandas 中将字符串列转换为日期的有效方法(在 Python 中),但没有时间戳

Pandas HDFStore:当 min_itemsize 设置为字符串列的最大值时追加失败

从 pandas DataFrame 中的多个字符串列中删除子字符串

如何替换 Pandas 数据框的字符串列中的文本?

在字符串列上使用 GROUP BY 时未获得分组结果

从 Pandas DF 的字符串列中提取数字