【发布时间】:2019-02-25 02:56:20
【问题描述】:
您好,我想创建 ID 组合。我知道如何创建所有可能的组合,但被困在操作的最后一部分。任何帮助将不胜感激。
我有一个数据集如下:
将熊猫导入为 pd 从itertools 导入combinations_with_replacement
d1 = {'Subject': ['Subject1','Subject1','Subject1','Subject2','Subject2','Subject2','Subject3','Subject3','Subject3','Subject4','Subject4','Subject4','Subject5','Subject5','Subject5'],
'Actual':['1','0','0','0','0','1','0','1','0','0','0','0','1','0','1'],
'Event':['1','2','3','1','2','3','1','2','3','1','2','3','1','2','3'],
'Category':['1','1','2','1','1','2','2','2','2','1','1','1','1','2','1'],
'Variable1':['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15'],
'Variable2':['12','11','10','9','8','7','6','5','4','3','2','1','-1','-2','-3'],
'Variable3': ['-6','-5','-4','-3','-4','-3','-2','-1','0','1','2','3','4','5','6']}
d1 = pd.DataFrame(d1)
我想在每一层的每个事件中创建所有可能的主题组合。这是由(来自上一个问题Form groups of individuals python (pandas))完成的:
L = [(i[0], i[1], y[0], y[1]) for i, x in d1.groupby(['Event','Category'])['Subject']
for y in list(combinations_with_replacement(x, 2))]
df = pd.DataFrame(L, columns=['Event','Category','Subject_IDcol1','Subject_IDcol2'])
现在,我想取所有那些 Actual = 1 的对,并随机选择 Actual = 0 的“n”个主题。为了简单起见,我们取 n = 1。我想运行函数 combination_with_replacement 在这个新列表中。
例如,我想要得到的输出(假设随机选择)是这样的:
对于事件 1,类别 1:主题 1 和 5 的实际 = 1,并假设主题 2 是随机抽取的。
与此相比,在之前的情况下,结果是这样的(对于事件 =1 和类别 =1)
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
第一张截图,按照你的解释,不应该是
Subject5Subject4吗?还是我误会了什么? -
@jdehesa 你是对的。我很抱歉。我在玩数据,并在发布时没有改变它。我会更新正确的版本。感谢您指出这一点。
标签: python pandas random data-manipulation