Python Pandas: 如何根据另一个数组的条件替换DataFrame中的值

我有一个如下所示的DataFrame。两个列都包含Member_ID,表示哪些Member_ID与其他Member_ID相连

   col1  col2    1     3    1     4    1     5    2     3    2     4    3     1    3     2    3     5    4     1    4     2    5     1    5     3    

我已经计算了每个Member_ID与多少个Member_ID相连。例如,Member_ID 1与3个Member_ID相连。如果一个Member_ID包含3个或更多的连接,我们需要在Member_ID前面加上“a”,否则我们需要加上“b”,所以对于Member_ID 1,我们需要标记为“a1”。同样,我已经为每个Member_ID计算了标签,标签数组如下。

 member_ID   No_of_con  Label    1          3         a1    2          2         b2    3          3         a3    4          2         b4    5          2         b5    

现在我需要参考标签数组来替换第一个DataFrame中的值。DataFrame很大,使用for循环效率不高,那么如何用Pandas更简单地实现这一点?我期望的结果如下

    col1     col2    a1         a3    a1         b4    a1         b5    b2         a3    b2         b4    a3         a1    a3         b2    a3         b5    b4         a1    b4         b2    b5         a1    b5         a3


回答:

我们可以使用stackmapunstack来实现:

In [9]: d1.stack().map(d2.set_index('member_ID')['Label']).unstack()Out[9]:   col1 col20    a1   a31    a1   b42    a1   b53    b2   a34    b2   b45    a3   a16    a3   b27    a3   b58    b4   a19    b4   b210   b5   a111   b5   a3

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注