Python 如何将数据帧转换为字典,保留1列作为键,并将第二列的值与每个键相加

Python 如何将数据帧转换为字典,保留1列作为键,并将第二列的值与每个键相加,python,python-3.x,dataframe,dictionary,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'])

我有一个数据框,有两列“作者”和他们的“排名”。我需要计算每个独特作者的总排名。共有230万独立作者,我当前数据框架的维度为13248457,2。 我目前的解决方案需要非常长的时间来执行,我相信字典会加快这个过程,但我不知道如何使用字典

下面的代码是我试图解决这个问题的方法,但执行起来需要几个小时

for auth in unique_auth:
    unique_auth_ranks.append(np.sum(list((df[df.authors == auth ])['rank'])))
如果我可以将唯一的作者设置为字典的键,并对他们的等级进行求和,这可能会更快,但我以前从未在python中使用过字典


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

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将非常快。在聚合数据之前,
groupby
将映射每个作者姓名的位置位置,而不是要求pandas查看每个唯一作者姓名的整个数据框(即
df[df.authors==auth]
)。

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将非常快。在聚合数据之前,
groupby
将映射每个作者姓名的位置位置,而不是要求pandas查看每个唯一作者姓名的整个数据框(即
df[df.authors==auth]
)?排名是数字值,例如,作者出现3次,排名为“1”、“3”和“5”。我希望最终结果是作者姓名:“8”你的意思是“9”吗?对不起,我的意思是9你试过@yatu的推荐了吗?
df.groupby('authors')['rank'].sum()
?排名是数字值,例如作者出现3次,排名为“1”、“3”和“5”。我希望最终结果是作者姓名:“8”你是说“9”吗?对不起,我是说9你试过@yatu的推荐了吗?