【发布时间】:2022-01-14 18:02:31
【问题描述】:
我是 Python 新手,非常感谢任何有关如何在我的数据框列中定位公共子字符串的提示和提示。
我有一个包含视频频道和在那里观看视频的用户的数据集,我想找出哪些频道共享相同的观众并找到观看者的 ID。
我的数据如下所示:
d = {'channel':[1, 2, 3], 'users':[['uid01', 'uid03'], ['uid02', 'uid03', 'uid07'], ['uid06', 'uid01']]}
df = pd.DataFrame(data=d)
确实,ID 的数量要高得多,大多数频道都达到数百个。频道数量仅限于 9 个。
我希望每个频道都有单独的列,其值由观看这两个频道的用户的 ID 表示。预期的结果是这样的:
result = {'channel':[1, 2, 3],
'users':[['uid01, uid03'], ['uid02', 'uid03', 'uid07'], ['uid06', 'uid01']],
'1': [['uid01', 'uid03'], ['uid03'], ['uid01']],
'2': [['uid03'], ['uid02', 'uid03', 'uid07'], []],
'3': [['uid01'], [], ['uid06', 'uid01']]}
df_result = pd.DataFrame(data=result)
我的即时想法是用集合的交集来解决它,但我不知道应该怎么做。 到目前为止,我设法实现的只是添加单列的功能:
def intersection(df, c):
intersecting= []
for n in range(0, 3):
intersecting.append(set(df.users[n]).intersection(df.users[c]))
col = np.array(intersecting)
df['1'] = col
return df
然而,这个函数只有在我作为独立函数直接调用时才有效,当我将它与 Pandas apply() 一起使用时无法执行。非常感谢您的建议!
【问题讨论】:
标签: python pandas substring intersection