我有一个数据帧,看起来像这个例子,
其中id是唯一的,但id可以共享位置,就像id 1和2共享0,0单元格
| id | x | y |
-----------------------
1| 1 | 0 | 0 |
2| 2 | 0 | 0 |
3| 3 | 1 | 2 |
4| 4 | 1 | 0 |
.
.
我想获得室友的数据帧,例如:
其中索引和列是根据id的,如果共享单元格,则值为1,否则为0
| 1 | 2 | 3 | 4 | ...
---------------------------
1| 0 | 1 | 0 | 0 |
2| 1 | 0 | 0 | 0 |
3| 0 | 0 | 0 | 0 |
4| 0 | 0 | 0 | 0 |
.
.
因为这是一个大数据帧,所以函数需要向量化,而不使用apply
方法,这些方法基本上是在行上循环
arr = df1.to_numpy()
arr = arr[1:]
mask = (arr[:, np.newaxis] == arr).prod(axis= 2)
df2 = pd.DataFrame(mask)