首页 > 解决方案 > 数据框唯一项目和 xy 位置到室友(共享位置)项目网格

问题描述

我的数据框看起来像这个例子,
其中 id 是唯一的,但 ids 可以共享位置,例如 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基本上循环遍历行的方法

标签: pythonpandasnumpylocationvectorization

解决方案


arr = df1.to_numpy()
arr = arr[1:]
mask = (arr[:, np.newaxis] == arr).prod(axis= 2)
df2 = pd.DataFrame(mask) 

推荐阅读