gpt4 book ai didi

python - 计算数据框中唯一共同作者的数量

转载 作者:行者123 更新时间:2023-11-28 21:33:27 25 4
gpt4 key购买 nike

我有一个非常大的数据框,其中包含图书 ID 以及共同创作每本书的人员姓名。我想计算每个作者在他的整个职业生涯中曾经与多少个“独特”的合著者合作过。

例如:

BookID   Author
1 John
1 Alex
1 Jenna
2 John
2 Alex
3 John
4 Alex
4 Mary
4 Max

预期的结果是(括号之间的内容不是必需的,但我把它放在那里是为了更好地证明,我只想要数字):

Author     Num_Unique_CoAuthors
John 2 (Alex and Jenna)
Alex 4 (John, Jenna, Mary and Max)
Jenna 2 (Alex and John)
Mary 2 (Alex and Max)
Max 2 (Alex and Mary)

最佳答案

首先为每个组创建到新列,然后与Author列进行差异,通过 boolean indexing 删除空集最后将值展平为新的集合以获得唯一的最后获取长度:

df = df.join(df.groupby('BookID')['Author'].apply(set).rename('new'), 'BookID')

df['new'] = [b - set([a]) for a, b in zip(df['Author'], df['new'])]

df = (df[df['new'].astype(bool)].groupby('Author')['new']
.apply(lambda x: tuple(set([z for y in x for z in y])))
.to_frame())

df.insert(0, 'Num_Unique_CoAuthors', df['new'].str.len())
print (df)
Num_Unique_CoAuthors new
Author
Alex 4 (Max, John, Jenna, Mary)
Jenna 2 (John, Alex)
John 2 (Jenna, Alex)
Mary 2 (Max, Alex)
Max 2 (Mary, Alex)

关于python - 计算数据框中唯一共同作者的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54647209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com