gpt4 book ai didi

Python从子集中查找对(对数正在变化)

转载 作者:行者123 更新时间:2023-12-01 09:30:55 24 4
gpt4 key购买 nike

我有以下数据集:

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=

enter image description here

我有第二个较小的数据集(约 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=

enter image description here

我需要做的是从第二个文件(d2)中查找每个类别中每个事件中的主题对。如果对于给定的事件 ID 和类别,d1 和 d2 中都存在该对,则将 1 分配给 df1 中的行。否则分配 0。

enter image description here

请注意,在 df2 的第 2 行中,两个个体的顺序颠倒了。在 d2 中,我们有主题 3 和主题 2,而不是 d1 中的主题 2 和主题 3。但是,就我而言,我想将两者视为相同。在本例中,我想为这些情况分配值 1。

enter image description here

最后,d1 中存在 d2 中没有的对(对于每个事件,每个类别)。例如,对于事件 3,df2 中不存在主题 1 和主题 2 的配对(尽管 df1 中存在该配对)。在这种情况下,请在存在的列下指定值 =0。最终输出将如下所示:

enter image description here

我尤其不知道该怎么做。特别是在分组可能发生变化(主题 1 和主题 2)与(主题 2 和主题 1)的情况下。

任何帮助将不胜感激。提前。

如果我不清楚,请告诉我

最佳答案

使用 indiv1 和 indiv2 与 np.sort 创建 key ,然后使用 isin(使用 d1.drop('key',1 删除它) inplace=True))

d2['key']=np.sort(d2.iloc[:,:2],axis=1).sum(1)+d2.Event.astype(str)
d1['key']=np.sort(d1.iloc[:,:2],axis=1).sum(1)+d1.Event.astype(str)
d1['persent']=d1.key.isin(d2.key).astype(int)
d1
Out[39]:
Indiv1 Indiv2 Event Category Variable1 Variable2 Variable3 \
0 Subject1 Subject4 1 1 1 12 -4
1 Subject2 Subject3 1 2 2 11 -3
2 Subject1 Subject2 2 1 3 10 -2
3 Subject1 Subject4 2 1 4 9 -1
4 Subject2 Subject4 2 1 5 8 0
5 Subject1 Subject2 3 2 6 7 1
6 Subject1 Subject3 3 2 7 6 2
7 Subject2 Subject3 3 2 8 5 3
key persent
0 Subject1Subject41 1
1 Subject2Subject31 1
2 Subject1Subject22 1
3 Subject1Subject42 1
4 Subject2Subject42 0
5 Subject1Subject23 0
6 Subject1Subject33 0
7 Subject2Subject33 0

关于Python从子集中查找对(对数正在变化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49973107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com