У меня есть dataframe с тысячами рядов данных взаимодействия с пользователем.
Я использовал это, чтобы дать мне только пользователей, которые userID начинаются с определенных букв
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?
Благодарим за любую идею :)
Если вы хотите просто проверить значения colA в colB, вы можете использовать этот фрагмент
df['userA column: '].isin(df['userB column: ']).sum()
Из:
2
Поиск последовательности вхождений count в 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