Python pandas 模拟 Excel 数据透视表
我之前用Excel,现在很想转到Pandas,所以我在看Wes McKinney的书……觉得非常有趣……同时也在尝试一些自己的东西……
假设我们有一个数据框,可以通过下面这个csv文件读取:
city,inhabitants,city_type,county
city a,9483,city,diggersville
city b,2628,city,diggersville
city c,5206,city,diggersville
city d,5206,city,diggersville
city e,839,village,crazytown
city f,3574,city,crazytown
city g,35,village,crazytown
city h,8214,city,downsend
city i,4278,city,downsend
所以我的代码大概是这样的:
data = pd.read_csv('test.txt')
我想要计算每个县和城市类型组合的以下两个内容:
- 居民总数
- 城市/村庄的数量
而且我希望这些结果能并排显示在我的结果数据框中,作为列。
我知道怎么计算这两个单独的内容:
data.groupby(['city_type','county']).sum()
data.groupby(['city_type','county']).city.count()
但正如上面提到的,我希望把它们合并到一个结果数据框中(就像Excel中的数据透视表):
my_count my_sum
city_type county
city crazytown 1 3574
diggersville 4 22523
downsend 2 12492
village crazytown 2 874
如果有人能帮我一下该怎么做,我会非常感激,因为我真的想向我的同事们展示Python是多么简单 :)
1 个回答
4
你可以把一个字典传给 agg
方法。字典里的键是列的名字,而每个值则是你想用来处理这个列的函数:
In [98]: data.groupby(['city_type','county']).agg(
{'city': 'count', 'inhabitants': 'sum'})
Out[98]:
inhabitants city
city_type county
city crazytown 3574 1
diggersville 22523 4
downsend 12492 2
village crazytown 874 2