首页 > 解决方案 > 我怎样才能找到每两个演员播放以下数据框的电影数量?

问题描述

我有一个数据框:

pd.DataFrame({'movie':['HT','TP','Wi','kah','MB'],'actors':[['QQ','AA','ZZ','WW','SS','XX'],['QQ','WW','EE','DD','SS','AA'],['EE','DD','CC','RR','FF','VV'],['VV','CC','XX','ZZ','FF','DD'],['SS','AA','RR','EE','WW','QQ']]})

这是一个包含每部电影中所有演员的电影 DataFrame,我想找出每两个演员一起演过的电影数量。例如艺术情侣“AA”和“QQ”合作过的电影数量。

标签: pythonpandasdataframenumpy

解决方案


让我们尝试爆炸actors然后自合并:

s = df.explode('actors')
(s.merge(s, on='movie')
  .query('actors_x<actors_y')
  .groupby(['actors_x','actors_y']).size()
  .unstack('actors_y', fill_value=0)
)

输出:

actors_y  DD  EE  FF  QQ  RR  SS  VV  WW  XX  ZZ
actors_x                                        
AA         1   2   0   3   1   3   0   3   1   1
CC         2   1   2   0   1   0   2   0   1   1
DD         0   2   2   1   1   1   2   1   1   1
EE         0   0   1   2   2   2   1   2   0   0
FF         0   0   0   0   1   0   2   0   1   1
QQ         0   0   0   0   1   3   0   3   1   1
RR         0   0   0   0   0   1   1   1   0   0
SS         0   0   0   0   0   0   0   3   1   1
VV         0   0   0   0   0   0   0   0   1   1
WW         0   0   0   0   0   0   0   0   1   1
XX         0   0   0   0   0   0   0   0   0   2

推荐阅读