gpt4 book ai didi

python - 计算有多少 Actor 与其他不同的 Actor / Actor 合作过

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:42 25 4
gpt4 key购买 nike

我有一个数据框:

title     |      cast 
------------------------------
movie1 | cast1,cast2,cast3
movie2 | cast4,cast1,cast6,cast7
movie3 | cast4,cast3,cast5

pd.DataFrame({'movie': ['movie1','movie2','movie3'], 'cast': ['cast1,cast2,cast3','cast4,cast1,cast6,cast7','cast4,cast3,cast5']})

所以,我想得到如下结果:

cast   |      count
------------------------------
cast1 | 5
cast2 | 2
cast3 | 4
cast4 | 5
cast5 | 2
cast6 | 3
cast7 | 3

为此,

df_cast = df.join(df.cast
.str.strip(',')
.str.split(',',expand=True)
.stack()
.reset_index(level=1,drop=True)
.rename('cast_member')).reset_index(drop=True)

这将添加一个新列 cast_member,每个单元格中只有一个 Actor 姓名。我尝试使用 groupby('cast_member') 但是,我不确定之后如何继续。

enter image description here

我是 pandas 的新手,所以我非常感谢您的回答,即使它可能很简单。

最佳答案

使用 GroupBy.transform 对于每 movie 计数的新列第一:

df_cast['cast_count'] = df_cast.groupby('movie')['movie'].transform('size')
print (df_cast)
movie cast cast_member cast_count
0 movie1 cast1,cast2,cast3 cast1 3
1 movie1 cast1,cast2,cast3 cast2 3
2 movie1 cast1,cast2,cast3 cast3 3
3 movie2 cast4,cast1,cast6,cast7 cast4 4
4 movie2 cast4,cast1,cast6,cast7 cast1 4
5 movie2 cast4,cast1,cast6,cast7 cast6 4
6 movie2 cast4,cast1,cast6,cast7 cast7 4
7 movie3 cast4,cast3,cast5 cast4 3
8 movie3 cast4,cast3,cast5 cast3 3
9 movie3 cast4,cast3,cast5 cast5 3

然后聚合 size sum cast_count并减去最后的 count :

df = df_cast.groupby('cast_member')['cast_count'].agg(['size','sum'])
df1 = df['sum'].sub(df['size']).rename('count').reset_index()
print (df1)
cast_member count
0 cast1 5
1 cast2 2
2 cast3 4
3 cast4 5
4 cast5 2
5 cast6 3
6 cast7 3

关于python - 计算有多少 Actor 与其他不同的 Actor / Actor 合作过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53236608/

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