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
我们可以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)