【发布时间】:2016-02-05 21:25:34
【问题描述】:
我有一个类似于this question 的数据透视表,但似乎没有答案。我有一个名为 grouped 的数据透视表,如下所示:
grouped = age_gender_bkts.pivot_table('population_in_thousands',index='gender',
columns='country_destination', aggfunc='sum').unstack()
这取自 pandas 数据框 age_gender_bkts:
age_gender_bkts = pd.read_csv('airbnb/age_gender_bkts.csv')
age_gender_bkts[:10]
age_bucket country_destination gender population_in_thousands year
0 100+ AU male 1 2015
1 95-99 AU male 9 2015
2 90-94 AU male 47 2015
3 85-89 AU male 118 2015
4 80-84 AU male 199 2015
5 75-79 AU male 298 2015
6 70-74 AU male 415 2015
7 65-69 AU male 574 2015
8 60-64 AU male 636 2015
9 55-59 AU male 714 2015
我希望获得每个国家/地区的男性和女性 population_in_thousands 之间的比例,作为每种性别的百分比,例如12024/11899+12024 为AU。
我对 pandas 非常陌生,numpy,正在寻找基于pivot_table 计算列的通用解决方案。此外,如果回复可以让我在不使用pivot_table 的情况下按性别和国家/地区创建这些组,例如groupby(我想不通),这对我的学习很有帮助。
【问题讨论】:
-
你可以添加问题文本而不是图像吗?
-
我也为你添加了。
-
@jezrael 我认为您不需要在这里回答问题
-
好吧,也许你可以试试
print grouped / grouped.groupby(level=0).transform(sum) -
是的,这行得通!如何将该计算添加到原始 df 中的新列,例如
age_gender_bkts['prop']?