我试图理解一个来自Python的示例,用于Wes McKinney的数据分析书籍。我已经看过熊猫食谱,文档等等,但找不到这样的例子。在
{2012年联邦选举委员会的例子。下面的代码决定了向奥巴马和罗姆尼捐款的主要职业。在
我很难理解该函数如何获取groupby对象并对其执行另一个groupby操作。当我在函数外运行这个函数时,我得到一个错误。有人能解释一下这种行为吗?在
谢谢
依华厅
# top donor occupations donating to Obama or Romney
def get_top_amounts(group, key, n = 5):
totals = group.groupby(key)['contb_receipt_amt'].sum()
return totals.sort_values(ascending = False)[:n]
# first group by candidate
grouped = fec_mrbo.groupby('cand_nm')
# for each group, group again by contb_receipt_amt so we have a hierarchical index
# take the contribution amount
# then return the total amount for each occupation by cand sorted to give top n
grouped.apply(get_top_amounts, 'contbr_occupation', n= 5)
结果是这样的
^{pr2}$
当您在分组数据帧上使用^{{cd1>}时,实际上您正在遍历组并传递每个组函数,您正在应用。 让我们看一个简单的例子:
现在让我们创建一个简单的函数,它允许我们查看传递给函数的内容:
^{pr2}$正如您所看到的,每个组都作为单独的数据帧传递给函数。当然,您可以将所有的法线函数应用到这个子集。 您看到第一组两次是由于内部原因,无法更改,这不是bug;)。
让我们创建另一个函数来证明:
^{pr3}$您甚至可以进一步做团体申请团体申请团体申请等。。。
我希望这能帮助你了解发生什么事。
顺便说一下,如果使用ipdb(调试工具),您可以在应用函数中设置断点a与组数据帧交互。
相关问题 更多 >
编程相关推荐