Python Pandas:如何基于条件库中的另一个数组替换Dataframe中的值

kum*_*han 1 python machine-learning dataframe pandas

我有一个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的值.使用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

Max*_*axU 5

我们可以stack,map并且unstack:

In [9]: d1.stack().map(d2.set_index('member_ID')['Label']).unstack()
Out[9]:
   col1 col2
0    a1   a3
1    a1   b4
2    a1   b5
3    b2   a3
4    b2   b4
5    a3   a1
6    a3   b2
7    a3   b5
8    b4   a1
9    b4   b2
10   b5   a1
11   b5   a3
Run Code Online (Sandbox Code Playgroud)