在Python中获取组中的总数和个体

时间:2019-10-02 16:55:28

标签: python

我正在从csv中读取此数据,并试图找到排名前2位的频道及其视频以及它们的收入和观看次数总和。 我还想根据渠道的最高收入对结果进行排序。 我该如何在python中执行此操作,我在mysql中尝试了此操作对我不起作用。任何帮助表示赞赏。

输入

channel_name    video   views   revenue
abc             v1       1       4
abc             v2       1       5
abc             v2       1       5
efg             v3       2       3
ijk             v4       3       2

预期输出 enter image description here

3 个答案:

答案 0 :(得分:0)

您可以使用熊猫grouby()sum()函数。结果将已经升序排列:

In [4]: df
Out[4]:
  channel_name video  views  revenue
0          abc    v1      1        4
1          abc    v2      1        5
2          abc    v2      1        5
3          efg    v3      2        3
4          ijk    v4      3        2

In [5]: grouped = df.groupby(['channel_name', 'video'])

In [6]: grouped.sum()
Out[6]:
                    views  revenue
channel_name video
abc          v1         1        4
             v2         2       10
efg          v3         2        3
ijk          v4         3        2

如果您希望索引成为列:

In [7]: grouped.sum().reset_index()
Out[7]:
  channel_name video  views  revenue
0          abc    v1      1        4
1          abc    v2      2       10
2          efg    v3      2        3
3          ijk    v4      3        2

答案 1 :(得分:0)

尝试一下:

df.groupby(['channel_name','video'])[['views','revenue']].sum()

答案 2 :(得分:0)

第一个选项:

data_group = data.groupby(by=['channel_name', 'video']).sum()
data_group.head()
                      views revenue
channel_name    video       
abc              v1      1      4
                 v2      2      10
efg              v3      2      3
ijk              v4      3      2

第二个选项:

data_group = data.groupby(by=['channel_name', 'video']).agg({'views': 'sum', 'revenue': 'sum'})
data_group.head()

                          views revenue
    channel_name    video       
    abc              v1      1      4
                     v2      2      10
    efg              v3      2      3
    ijk              v4      3      2

保留列的第三种选择:

data_group = data_group.reset_index()

data_group.head()
    channel_name    video   views   revenue
0        abc          v1      1       4
1        abc          v2      2      10
2        efg          v3      2       3
3        ijk          v4      3       2