我有以下数据帧:
data = [
(27450, 27450, 29420,"10/10/2016"),
(29420 , 36142, 29420, "10/10/2016"),
(11 , 11, 27450, "10/10/2016")]
#Create DataFrame base
df = pd.DataFrame(data, columns=("User_id","Actor1","Actor2", "Time"))
第一列包含user_id,每行代表他所做的一个操作。每个用户标识都会显示在“Actor1”或“Actor2”列中。在
首先,我想创建一个新列,如果在“Actor1”列中找到用户_id,它将在其中分配值1,否则为0。在
第二,我想创建一个新的列,在这个列中为每个用户存储与他交互的“Actor”值。在
对于上述示例,输出将如下所示:
^{pr2}$什么是最有效的Python方法来做到这一点?在
提前谢谢你!在
这是我的解决方案-我假设如果userid出现在actor1列中,那么它就不必出现在同一行中。。。在
输出-
^{pr2}$收益率
^{pr2}$首先创建一个布尔掩码,当
User_id
等于Actor1
时为真:将
mask
转换为int将创建第一列:然后使用}。因此,
}中的值,否则:
np.where
在两个值之间进行选择。np.where(mask, A, B)
返回一个数组,如果mask[i]
为True,则返回其ith
值为A[i]
,否则返回{np.where(mask, df['Actor2'], df['Actor1'])
取Actor2
的值,其中mask
为真,则取{相关问题 更多 >
编程相关推荐