我在pandas数据框中有两列。一列具有相同的值(id),另一列中的对应值具有票数

时间:2018-03-07 22:12:08

标签: python pandas dataframe pandas-groupby

   id         n_tickets
0  1586391          2
1   640             2
2   640             1
3  1181593          2
4   964842          1
5    780            1
6    780            1  

我有上述数据框。正如您所看到的,在id列640和780中已经发生了两次。我希望只剩下一次,但是n_tickets列中的相应值会相加。我的最终数据框应如下所示:

     id         n_tickets
0  1586391          2
1   640             3
2  1181593          2
3   964842          1
4    780            2 

我正在使用代码:df_tickets.groupby(['id','n_tickets']).sum()但是我得到了错误:

Empty DataFrame
Columns: []
Index: []

当我使用以下代码时:

df_tickets.groupby('id',sort=False).sum().reset_index()

print(df_tickets.loc[df_tickets['id'] == 780])

我明白了:

        id     n_tickets
425166  780          1
985855  780          1

相反,我应该得到:

           id    n_tickets
   425166  780      2

2 个答案:

答案 0 :(得分:1)

尝试使用:

df_tickets = df_tickets.groupby(df_tickets['id']).sum()

这应该有用。

答案 1 :(得分:1)

您只需按'id'分组:

df.groupby('id',sort=False).sum().reset_index()
Out[60]: 
        id  n_tickets
0  1586391          2
1      640          3
2  1181593          2
3   964842          1
4      780          2

当我使用上面的代码时:

df_tickets.groupby('id',sort=False).sum().reset_index()

    print(df_tickets.loc[df_tickets['id'] == 780])

我明白了:

         id     n_tickets
425166  780          1
985855  780          1

相反,我应该得到:

    id    n_tickets
 425166  780      2