我有以下数据集:
d1 = {'Indiv1':['Subject1','Subject2','Subject1','Subject1','Subject2','Subject1','Subject1','Subject2'],
'Indiv2': ['Subject4','Subject3','Subject2','Subject4','Subject4','Subject2','Subject3','Subject3'],
'Event':['1','1','2','2','2','3','3','3'],
'Category':['1','2','1','1','1','2','2','2'],
'Variable1':['1','2','3','4','5','6','7','8'],
'Variable2':['12','11','10','9','8','7','6','5'],
'Variable3': ['-4','-3','-2','-1','0','1','2','3']}
d1 = pd.DataFrame(d1)
d1=d1[['Indiv1','Indiv2','Event','Category','Variable1','Variable2','Variable3']]
d1
它给出了以下结果(在我的数据集中,这个特定的文件有超过200万行):
d1=
我还有一个更小的数据集(大约1500行),格式如下:
d2 = {'Indiv1': ['Subject1','Subject3','Subject1','Subject4','Subject2','Subject1','Subject1','Subject2'],
'Indiv2': ['Subject4','Subject2','Subject6','Subject1','Subject1','Subject8','Subject9','Subject113'],
'Event':['1','1','2','2','2','3','3','3'],
'Category':['1','2','1','1','1','2','2','2']}
d2 = pd.DataFrame(d2)
d2=d2[['Indiv1','Indiv2','Event','Category']]
d2
如下所示:
d2=
我需要做的是从第二个文件(d2)中查找每个类别中每个事件的主题对。如果给定事件id和类别的d1和d2中都存在对exits,则将1赋给df1中的行。否则,指定0。你知道吗
注意,在df2的第2行中,两个个体的顺序是颠倒的。与d1中的主题2和主题3不同,d2中有主题3和主题2。然而,在我的情况下,我想把两者都当作一回事。在这种情况下,我想给这些情况赋值1。你知道吗
最后,d1中有一对不在d2中(对于每个事件,对于每个类别)。例如,对于事件3,在df2中没有与Subject1和subject2的对(尽管这在df1中存在)。在这种情况下,在当前列下指定一个值=0。最终输出如下所示:
我对如何做这件事特别困惑。尤其是在分组可能发生变化的情况下(主题1和主题2)与(主题2和主题1)。你知道吗
任何帮助都将不胜感激。提前准备。你知道吗
如果我不清楚,请告诉我
通过使用indiv1和indiv2与
np.sort
,然后使用isin
(使用d1.drop('key',1 inplace=True)
删除它)来创建密钥相关问题 更多 >
编程相关推荐