【发布时间】:2017-06-20 16:15:43
【问题描述】:
我试图从 Wes McKinney 的 Python for Data Analysis 一书中理解一个示例。我浏览了 pandas 食谱、文档和 SO,但找不到像这样的示例。
该示例着眼于 2012 年联邦选举委员会数据库 (https://github.com/wesm/pydata-book/blob/master/ch09.ipynb)。下面的代码确定了捐赠给奥巴马和罗姆尼的顶级捐赠者职业。
我很难理解该函数如何获取一个 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)
结果是这样的
cand_nm contbr_occupation
Obama, Barack RETIRED 25270507.23
ATTORNEY 11126932.97
INFORMATION REQUESTED 4849801.96
HOMEMAKER 4243394.30
PHYSICIAN 3732387.44
LAWYER 3159391.87
CONSULTANT 2459812.71
Romney, Mitt RETIRED 11266949.23
INFORMATION REQUESTED PER BEST EFFORTS 11173374.84
HOMEMAKER 8037250.86
ATTORNEY 5302578.82
PRESIDENT 2403439.77
EXECUTIVE 2230653.79
C.E.O. 1893931.11
【问题讨论】:
标签: python pandas group-by apply