我有一个 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
请您参考如下方法:
我们可以堆叠、映射和取消堆叠:
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
