来自Excel,非常愿意改为Pandas我正在阅读Wes McKinneys的书......有很多乐趣...但也尝试了一些我自己的东西......
假设我们有一个可以通过以下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')
我想按县和city_type组合计算以下两件事:
我希望在结果数据框中将这些彼此作为列。
我知道如何计算两个单独的事实:
data.groupby(['city_type','county']).sum()
data.groupby(['city_type','county']).city.count()
但如上所述,我希望将这些组合在一个结果数据框中(如Excel中的pivottable):
my_count my_sum
city_type county
city crazytown 1 3574
diggersville 4 22523
downsend 2 12492
village crazytown 2 874
这里有任何关于如何完成的帮助,因为我真的想向同事们展示Python太容易了:))
答案 0 :(得分:3)
你可以pass a dict to the agg
method。键是列名,每个值都是您希望用于聚合列的相应函数:
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