Python从两行创建Cooccurence矩阵

2024-09-22 16:43:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,看起来像这样(列中填充了电影的ID和演员的ID:

    movie  actor  clusterid
0    0      1     2
1    0      2     2
2    1      1     2
3    1      3     2
4    2      2     1

我想从这个数据帧中创建一个二进制共现矩阵,如下所示

                  actor1  actor2  actor3
clusterid 2 movie0    1      1     0
            movie1    1      0     1
clusterid 1 movie2    0      1     0

其中,我的数据帧有(i)一个多索引(clusterid,movieid)和一个二进制计数,用于根据我的初始数据帧在电影中表演的演员。你知道吗

我试过:

df.groupby("movie").agg('count').unstack(fill_value=0)

但不幸的是,这并没有扩展数据帧并计算总数。使用内部函数可以很容易地完成这样的操作吗?你知道吗

谢谢你的建议


Tags: 数据id电影二进制矩阵movieactor演员
1条回答
网友
1楼 · 发布于 2024-09-22 16:43:28

您可以创建一个额外的辅助列来指示该值是否存在,然后执行pivot_table

(df.assign(actor = "actor" + df.actor.astype(str), indicator = 1)
 .pivot_table('indicator', ['clusterid', 'movie'], 'actor', fill_value = 0))

enter image description here

或者使用set_index.unstack()模式:

(df.assign(actor = "actor" + df.actor.astype(str), indicator = 1)
 .set_index(['clusterid', 'movie', 'actor']).indicator.unstack('actor', fill_value=0))

相关问题 更多 >