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

问题描述 投票:1回答:2
   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 

我正在使用代码:qazxsw poop但我收到错误:

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
python pandas dataframe pandas-groupby
2个回答
1
投票

您只需按'id'分组:

           id    n_tickets
   425166  780      2

当我使用上面的代码时:

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

1
投票

尝试使用:

    id    n_tickets
 425166  780      2

这应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.