pandas显示按列分组的结果

时间:2015-01-29 22:00:13

标签: python-3.x pandas

我试图基本上像Excel中的数据透视表那样使用pandas。以下是我的一些数据:

  First_Name            Last_Name   Country Prize_Money
       Roger              Federer       SUI    88691538
       Novak             Djokovic       SRB    72444493
      Rafael                Nadal       ESP    71421511
        Andy               Murray       GBR    34190085
       David               Ferrer       ESP    24928109

输出将是国家和Prize_Money列的总和:

    Country Sum_Prize_Money
    ESP     96349620
    GBR     34190085

等等。

我用数据创建了一个DataFrame对象:

df = pd.DataFrame(Analysis_ATP_data_list, columns=['Ranking',
                                                   'First_Name',
                                                   'Last_Name',
                                                   'Country',
                                                   'Prize_Money'])

并希望我可以将groups_by摘要打印到屏幕上。

提前谢谢你,

1 个答案:

答案 0 :(得分:0)

您可以致电groupby

>>> df.groupby("Country")["Prize_Money"].sum()
Country
ESP        96349620
GBR        34190085
SRB        72444493
SUI        88691538
Name: Prize_Money, dtype: int64

如果你想要一个系列作为输出,或者

>>> df.groupby("Country", as_index=False)["Prize_Money"].sum()
  Country  Prize_Money
0     ESP     96349620
1     GBR     34190085
2     SRB     72444493
3     SUI     88691538

如果你想要一个框架。阅读grouping上的文档可能是一个好主意。


也可以进行更复杂的聚合:

>>> df.groupby("Country", as_index=False).agg({"Prize_Money": ["sum", "count"]})
  Country Prize_Money      
                  sum count
0     ESP    96349620     2
1     GBR    34190085     1
2     SRB    72444493     1
3     SUI    88691538     1