如何将包含布尔列的 pandas df 转换为热图兼容 table?

How to transform pandas df containing boolean columns into a heatmap compatible table?

我有一个 table 像这样的东西:

A B C
1 1 1 1
2 0 1 1
3 0 0 1

每个单元格包含该行是否连接到指定列。

我想将其转换成这样的 table:

A B C
A 1 1 1
B 1 2 2
C 1 2 3

其中每个单元格包含的行数(来自原始 table)已连接到第二个 table 中的特定列和行名称。

比如第二个table中的3表示原来table中有3行与B列和C列相连

目标是使用 plotly 从第二个 table 开始绘制热图。

代码:

import pandas as pd
import numpy as np 
import plotly.express as px



# data for data frame
data = {'A': {0: 1, 1: 0, 2: 0}, 
        'B': {0: 1, 1: 1, 2: 0}, 
        'C': {0: 1, 1: 1, 2: 1}}

# create dataframe
df = pd.DataFrame(data)

# list for our combination values
values = []

# loop over each column combination - 
# AA, AB, AC, BA, BB, BC, CA, CB, CC
for row in df.columns:
    # create a list for each row value
    # first iteration [AA, AB, AC]
    # Second iteration [BA, BB, BC]
    # third iteration [CA, CB, CC]
    temp_val = []
    for col in df.columns:
        # get number of rows that are connected 
        val = sum(df[row] & df[col])
        # add to temp list
        temp_val.append(val)
    # add the row to all rows list
    values.append(temp_val)

# create data frame
heat_df = pd.DataFrame(values, index=df.columns, columns=df.columns)

# plot heatmap
fig = px.imshow(heat_df)
fig.show()

数据帧输出:

    A   B   C
A   1   1   1
B   1   2   2
C   1   2   3

热图: