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
相关产品推荐
相关产品推荐

