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 设置为字符串列的最大值时追加失败