gpt4 book ai didi

python - 如何计算一个实体与另一个实体一起出现的次数

转载 作者:行者123 更新时间:2023-12-04 00:00:06 24 4
gpt4 key购买 nike

我有以下数据框:

df = pd.DataFrame([[1, 2], [1, 3], [4, 6], [4, 7]], columns=['group_id', 'student_id'])

每个student_id可以与其他student_ids在不同的group_ids中出现多次。

我想计算学生 x 与学生 y 同组的次数。换句话说,我想要一个 n x n DF,其中每个条目是 2 个学生在同一组中的次数(相同的 group_id,如果不匹配,则填写 0)。

2 2 3 4 5 6 7
3 1 0 0 0 0 0
4 0 0 0 0 0 0
5 0 0 0 0 0 0
6 0 0 0 0 0 1
7 0 0 0 0 1 0

我有什么方法可以用 SQL 或 Pandas 以更灵活的方式做到这一点?

谢谢

最佳答案

使用 numpy outer

s = df.group_id.to_numpy()
yourdf = pd.DataFrame(np.equal.outer(s,s),index=df.student_id,columns=df.student_id).astype(int)
yourdf
Out[40]:
student_id 2 3 6 7
student_id
2 1 1 0 0
3 1 1 0 0
6 0 0 1 1
7 0 0 1 1

或者做

freq = pd.crosstab(df['group_id'],df['student_id'])
yourdf = freq.T.dot(freq)
Out[45]:
student_id 2 3 6 7
student_id
2 1 1 0 0
3 1 1 0 0
6 0 0 1 1
7 0 0 1 1

关于python - 如何计算一个实体与另一个实体一起出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63141701/

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