首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python dataframe字典聚合合并和失败

Python dataframe字典聚合合并和失败
EN

Stack Overflow用户
提问于 2015-12-03 22:37:26
回答 1查看 310关注 0票数 1

假设我有这样的数据:

代码语言:javascript
复制
da1 = DataFrame({'id':['bub','char', 'bub'],
                 'a':[{'t1':1,'t2':3},
                      {'t1':3},
                      {'t2':1}]})
print da1
                      a    id
0  {u't2': 3, u't1': 1}   bub
1            {u't1': 3}  char
2            {u't2': 1}   bub

我想按键和列'a‘的内容,按'id’分组,我尝试的是:

代码语言:javascript
复制
print da1.groupby('id')\
        .aggregate({
            'a': lambda x: DataFrame.from_dict(x).sum().to_dict()})
id                                                    a 
bub   <built-in method values of dict object at 0x7f...
char  <built-in method values of dict object at 0x7f...

但如果我这样做的话:

代码语言:javascript
复制
bub = [{'t1':1,'t2':3}, {'t2':1}]
print DataFrame.from_dict(bub).sum().to_dict()
{'t2': 4.0, 't1': 1.0}

我第一次得到了我想要的,我错过了什么?

upd:我也试过使用计数器(),但没有成功.

代码语言:javascript
复制
from collections import Counter
print dict(sum((Counter(dict(x)) for x in bub),Counter()))
{'t2': 4, 't1': 1}

print da1.groupby('id')\
            .aggregate({
                'a': lambda dic: dict(sum((Counter(dict(x)) for x in dic),Counter()))})
id                                                    a 
bub   <built-in method values of dict object at 0x7f...
char  <built-in method values of dict object at 0x7f...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-04 13:28:45

我找到了解决这个问题的方法,也许效率很低,但对我来说很管用。

在使用apply方法时,我发现了一个关于类似错误的问题,并且修复了该错误。由于它们固定了应用程序,所以我使用了apply函数来做我想做的事情。

代码语言:javascript
复制
print DataFrame({'visitorId':da1.groupby('id', as_index=False).groups.keys(),
           'a':da1.groupby('id', as_index=False)\
                        .apply(lambda dic:
                                dict(sum((Counter(dict(x)) for x in dic.a),
                                          Counter())))})

                      a visitorId
0  {u't2': 4, u't1': 1}       bub
1            {u't1': 3}      char

我对分组数据使用了apply方法,获得“标识符”的最简单方法是获取组键。如果你对如何更有效地做这件事有建议,请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34077572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档