计算一个数据帧内两列中以相反对形式存在的唯一值的数量?

时间:2018-09-23 13:47:26

标签: python pandas dataframe userid

我有一个包含数千行用户交互数据的数据框。

我用来给我的用户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

任何想法将不胜感激:)

1 个答案:

答案 0 :(得分:0)

如果您只想检查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