我有一个数据集,它有两列:
index Value
0 True
1 True
2 False
3 True
有可能得到一个看起来像
的矩阵吗?index 0 1 2 3
0 True True False True
1 True True False True
2 False False False False
3 True True False True
我试过pd.crosstab
,仍然不能得到矩阵,有人能帮忙吗?
一个可能的方法:
m = np.tile(df['Value'], len(df)).reshape(-1, len(df)) * df[['Value']].values
out = pd.DataFrame(m)
print(out)
# Output
0 1 2 3
0 True True False True
1 True True False True
2 False False False False
3 True True False True
首先,使用to_numpy
将Value
列的值转换为numpy数组。然后利用numpy广播,用[:,None]
创建一个额外的轴,按位计算和操作:
vals = df['Value'].to_numpy()
res = pd.DataFrame(vals[:,None] & vals, index=df.index)
输出:
>>> res
0 1 2 3
index
0 True True False True
1 True True False True
2 False False False False
3 True True False True