当前位置:  开发笔记 > 编程语言 > 正文

pandas groupby和join list

如何解决《pandasgroupby和joinlist》经验,为你挑选了2个好方法。

我有一个数据帧df,有两列,我想组合一列并加入列表属于同一组,例如:

column_a, column_b
1,         [1,2,3]
1,         [2,5]
2,         [5,6]

过程结束后:

column_a, column_b
1,         [1,2,3,2,5]
2,         [5,6]

我想保留所有重复项.我有以下问题:

数据帧的dtypes是对象.convert_objects()不会自动将column_b转换为列表.我怎样才能做到这一点?

df.groupby(...).apply(lambda x:...)中的函数适用于什么?x的形式是什么?清单?

解决我的主要问题?

提前致谢.



1> TomAugspurge..:

objectdtype是一个全能型dtype,基本上不是指int,float,bool,datetime或timedelta.所以它将它们存储为列表.convert_objects尝试将列转换为其中一个dtypes.

你要

In [63]: df
Out[63]: 
   a          b    c
0  1  [1, 2, 3]  foo
1  1     [2, 5]  bar
2  2     [5, 6]  baz


In [64]: df.groupby('a').agg({'b': 'sum', 'c': lambda x: ' '.join(x)})
Out[64]: 
         c                b
a                          
1  foo bar  [1, 2, 3, 2, 5]
2      baz           [5, 6]

这会按列中的值对数据框进行分组a.阅读更多关于[groupby]的信息.(http://pandas.pydata.org/pandas-docs/stable/groupby.html).

这是一个常规列表sum(连接)就像[1, 2, 3] + [2, 5]



2> qwwqwwq..:
df.groupby('column_a').agg(sum)

这是因为运算符重载sum将列表连接在一起.得到的df的索引将是以下值column_a:

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有