【发布时间】:2018-04-23 03:45:47
【问题描述】:
我有以下数据集:
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 中都存在,则将 1 分配给 df1 中的行。否则赋值为 0。
请注意,在 df2 的第 2 行中,两个人的顺序是颠倒的。而不是 d1 中的主题 2 和主题 3,在 d2 中我们有主题 3 和主题 2。但是,在我的情况下,我想将两者视为相同。在这种情况下,我想为这些情况分配值 1。
最后,在 d1 中有一些在 d2 中没有的对(对于每个事件,对于每个类别)。例如,对于事件 3,df2 中没有 Subject1 和 Subject 2 的配对(尽管 df1 中存在这对)。在这种情况下,在当前列下分配一个值 =0。最终输出将如下所示:
我对如何做到这一点尤其感到困惑。尤其是在分组可能发生变化的情况下(主题 1 和主题 2)与(主题 2 和主题 1)。
任何帮助将不胜感激。提前 Ty。
如果我不清楚,请告诉我
【问题讨论】:
标签: python python-2.7 pandas data-manipulation