Groupby Sum忽略了几列

时间:2014-08-26 07:23:43

标签: python pandas

在这个DataFrame中,我想将“位置”分组并得到“得分”的总和,但我不想要'Lat','Long'和& “年份”在此过程中受到影响;

sample = pd.DataFrame({'Location':['A','B','C','A','B','C'],
                       'Year':[2001,2002,2003,2001,2002,2003],
                       'Lat':[24,32,14,24,32,14],
                       'Long':[81,85,79,81,85,79],
                       'Score':[123,234,10,25,46,11]})

grouped = sample.groupby(['Location']).sum().reset_index()

grouped给了我这个;

  Location  Lat   Long   Score   Year
0   A       48     162    148   4002
1   B       64     170    280   4004
2   C       28     158     21   4006

但我正在寻找这个结果;

     Location   Lat   Long   Score   Year
    0   A       24     81     148   2001
    1   B       32     85     280   2002
    2   C       12     79      21   2003

1 个答案:

答案 0 :(得分:3)

您必须为其他列提供某种形式的聚合方法。但在这种情况下,您可以使用meanfirstlast,这些都可以。

grouped = sample.groupby(['Location']).agg({'Lat': 'first', 
                                            'Long': 'first', 
                                            'Score': 'sum', 
                                            'Year': 'first'}).reset_index()

给出:

  Location  Score  Lat  Long  Year
0        A    148   24    81  2001
1        B    280   32    85  2002
2        C     21   14    79  2003

请注意,您也可以提供自己的函数,而不是Pandas中的内置函数,可以使用字符串进行标识。

如果只关心索引,它会弄乱列的顺序:

grouped[['Location', 'Lat', 'Long', 'Score', 'Year']]