Python pandas模仿excel数据透视表

时间:2014-08-25 21:39:47

标签: python pandas

来自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组合计算以下两件事:

  1. 居民总数
  2. 城市/村庄数量
  3. 我希望在结果数据框中将这些彼此作为列。

    我知道如何计算两个单独的事实:

    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太容易了:))

1 个答案:

答案 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