python - 计算数据框中两列中作为相反对存在的唯一值的数量?
问题描述
我有一个包含数千行用户交互数据的数据框。
我用它来只给我用户 ID 以某些字母开头的用户
df[
df.userA.str.startswith(('b','c','e','f','5')) &
df.userB.str.startswith(('b','c','e','f','5'))
]
返回的东西看起来像这样
userA column: userB column: timestamp column:
f55570ac-c757-4e1f-b0b2-34997614f929 5ccd7ffd-7776-4a81-81dd-5331972454c2 2017-12-12 00:00:00
5bfb4313-1d38-4dd2-944d-82bcabea9e31 ebc48322-f8b8-4994-968c-93e8d9e9df1d 2017-12-13 00:03:00
ebc48322-f8b8-4994-968c-93e8d9e9df1d 5bfb4313-1d38-4dd2-944d-82bcabea9e31 2017-12-14 00:03:00
这个“显示”的是,在第一行,用户 f55570ac- 在那个时间戳跟随用户 5ccdffd。
在第二行中,用户 5bfb4313- 在该时间戳跟随 ebc48322-,在第三行中,用户 ebc48322- 在该时间戳后跟随用户 5bfb4313-,因此具有相互关系。
如何计算 整个数据框中相互关系的数量?即,存在于 userA 列和 userB 列中的唯一用户 ID对?
任何想法将不胜感激:)
解决方案
如果您只想检查 colB 中的 colA 值,可以使用此代码段
df['userA column: '].isin(df['userB column: ']).sum()
出去:
2
在 userA 和 userB 中查找出现的序列计数
pd.concat([df['userA']+'->'+df['userB'],df['userB']+'->'+df['userA']]).value_counts()
出去:
5bfb4313-1d38-4dd2-944d-82bcabea9e31->ebc48322-f8b8-4994-968c-93e8d9e9df1d 2
ebc48322-f8b8-4994-968c-93e8d9e9df1d->5bfb4313-1d38-4dd2-944d-82bcabea9e31 2
5ccd7ffd-7776-4a81-81dd-5331972454c2->f55570ac-c757-4e1f-b0b2-34997614f929 1
f55570ac-c757-4e1f-b0b2-34997614f929->5ccd7ffd-7776-4a81-81dd-5331972454c2 1
推荐阅读
- dolphindb - 如何生成像 xn * n / 10 这样可能加十倍以上的元代码?
- css - css线性渐变背景CPU高使用率
- asp.net-core - 如何使用 ProtectedPersonalData 属性
- python - 将ZCTA转换为经度和纬度
- ruby-on-rails - 如何将一个文件夹移动到 S3 存储桶中的另一个文件夹中?
- powershell - 如何在创建 TCP 套接字的 Powershell 函数中设置 IP 生存时间?
- rest - 如何在 HATEOS/Hypermedia API 中正确实现链接
- amazon-web-services - 如何在 EC2 实例中提供 https 请求?
- javascript - Firebase 计划函数从 Firestore 读取数据,然后进行一些更新
- django - 使用从firebase托管到云运行的重写时,登录在django中不起作用