gpt4 book ai didi

python - Pandas 。 2列数据框。获取交集矩阵(全部到全部,来自第 1 列)

转载 作者:行者123 更新时间:2023-11-28 21:38:24 30 4
gpt4 key购买 nike

我有一个像这样的数据框(基本上有两列:第一列包含博主 ID,第二列包含关注者):

blogger follower
A c
A d
A e
A f
A g
A h
A i
A j
A k
B c
B f
B g
B l
B m
B n
B o
B p
B q
B r
B s
B t
B k
C a
C k
C r
C g
C t
C c
C p
C y
C z
C w

我想要得到的是一个方阵,具有所有的交点数,如下所示:

    A   B   C
A - 4 3
B 4 - 6
C 3 6 -

我不是熟练的 pandas 用户,我所做的只是使用 2 个循环和 np.intersect 来实现,我认为这效率不高。我一直在尝试使用 pivot_table()、crosstab() 和 groupby() - 运气不好,所以不幸的是没有代码可以分享。也许这里有人知道有效的解决方案?

最佳答案

执行自合并,然后执行交叉制表操作。

i = df.merge(df, on='follower') 
j = pd.crosstab(i.blogger_x, i.blogger_y)

j

blogger_y A B C
blogger_x
A 9 4 3
B 4 13 6
C 3 6 10

当然,对角线不是 -,但这很容易。

j = j.astype(object)
j.values[[np.arange(j.shape[0])] * 2] = '-'

j

blogger_y A B C
blogger_x
A - 4 3
B 4 - 6
C 3 6 -

请注意,这会破坏性能,因为您的列现在是对象类型,这是在同一列中混合不同类型值的唯一方法。

关于python - Pandas 。 2列数据框。获取交集矩阵(全部到全部,来自第 1 列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321139/

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