如何将数据帧转换为字典,以1列为键,并针对每个键将第二列的值求和

时间:2019-05-08 13:20:57

标签: python python-3.x dataframe dictionary

我有一个包含两列“作者”及其“等级”的数据框。我需要计算每个唯一作者的总排名。总共有230万位独特的作者,而我当前数据框架的维度是13248457,2。 我当前的解决方案需要花很长时间才能执行,我相信词典会加快这一过程,但我不知道如何使用词典。

以下代码是我尝试解决此问题的方法,但是执行将花费数小时。

for auth in unique_auth:
    unique_auth_ranks.append(np.sum(list((df[df.authors == auth ])['rank'])))

如果我可以将unique_authors设置为字典的键并对其排名求和,则它可能会更快运行,但我以前从未在python中使用过字典。

排名是数值,例如作者“ abc”出现3次,排名为“ 1”,“ 3”和“ 5”,我希望最终结果为“ abc”:“ 9”

1 个答案:

答案 0 :(得分:0)

IIUC:您的数据如下所示:

  AuthorName  rank
0    author1     1
1    author2     2
2    author1     3
3    author1     4
4    author3     5
5    author3     6
6    author5     7
7    author3     8

你想要的

df = df.groupby('AuthorName').sum()

返回:

            rank
AuthorName      
author1        8
author2        2
author3       19
author5        7

由于author1的排名为1,3,4,因此排名总和为8。

使用groupby很快。 df[df.authors == auth ]不会要求熊猫在整个数据框中查找每个唯一作者姓名(即groupby),而是会在汇总数据之前为每个作者姓名映射位置。