You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataFrame成对重塑:将给定表格转换为指定格式的成对矩阵

解决方案

可以通过pandas的透视表功能快速实现需求,以下是具体代码:

方法1:使用pivot + reindex

import pandas as pd

df = pd.DataFrame({'col1':['a', 'a', 'a', 'b', 'b', 'c', 'c'], 
                   'col2':['a', 'b', 'c', 'b', 'c', 'a', 'c'], 
                   'count':[12, 2, 45, 4, 6, 17, 20]})

# 生成透视表,行对应col2,列对应col1,值为count
result = df.pivot(index='col2', columns='col1', values='count')
# 重新指定行和列的顺序为a、b、c,缺失值自动填充NaN
result = result.reindex(index=['a', 'b', 'c'], columns=['a', 'b', 'c'])

print(result)

运行后输出:

col1     a    b     c
col2                 
a     12.0  NaN  17.0
b      2.0  4.0   NaN
c     45.0  6.0  20.0

如果需要将缺失值填充为0,修改reindex行:

result = result.reindex(index=['a', 'b', 'c'], columns=['a', 'b', 'c'], fill_value=0)

方法2:使用pivot_table

pivot_table适合处理存在重复组合的场景(本例无重复),也可直接指定填充值:

import pandas as pd
import numpy as np

df = pd.DataFrame({'col1':['a', 'a', 'a', 'b', 'b', 'c', 'c'], 
                   'col2':['a', 'b', 'c', 'b', 'c', 'a', 'c'], 
                   'count':[12, 2, 45, 4, 6, 17, 20]})

result = df.pivot_table(index='col2', columns='col1', values='count', fill_value=np.nan)
result = result.reindex(index=['a', 'b', 'c'], columns=['a', 'b', 'c'])

print(result)

内容的提问来源于stack exchange,提问作者corianne1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:12:37