熊猫数据框转换为重复矩阵的数量总和

2024-10-01 11:30:04 发布

您现在位置:Python中文网/ 问答频道 /正文

import pandas as pd
data = {0: {'ID': 'A', 'Qty': 1, 'Type': 'SVGA'},
 1: {'ID': 'B', 'Qty': 2, 'Type': 'SVGA'},
 2: {'ID': 'B', 'Qty': 2, 'Type': 'XGA'},
 3: {'ID': 'C', 'Qty': 3, 'Type': 'XGA'},
 4: {'ID': 'D', 'Qty': 4, 'Type': 'XGA'},
 5: {'ID': 'A', 'Qty': 1, 'Type': 'LED'},
 6: {'ID': 'C', 'Qty': 3, 'Type': 'LED'}}
df = pd.DataFrame.from_dict(data, orient='index')

有没有可能把这个数据帧转换成一个重复的矩阵和

预期产量:

        LED  SVGA  XGA                
LED       4     1    3
SVGA      1     3    2
XGA       3     2    9

Tags: fromimportiddataframepandasdfdataled
1条回答
网友
1楼 · 发布于 2024-10-01 11:30:04

这里的关键似乎是“ID”列,因为每个类型单元格的值是根据这些类型是否为同一ID共存而计算的

所以,从“ID”上的自合并开始。然后,您可以调整结果以获得矩阵

merge+crosstab

v = df.merge(df[['ID', 'Type']], on='ID') 
pd.crosstab(v.Type_x, v.Type_y, v.Qty, aggfunc='sum')

Type_y  LED  SVGA  XGA
Type_x                
LED       4     1    3
SVGA      1     3    2
XGA       3     2    9

merge+pivot_table

df.merge(df[['ID', 'Type']], on='ID').pivot_table(
    index='Type_x', columns='Type_y', values='Qty', aggfunc='sum'
)

Type_y  LED  SVGA  XGA
Type_x                
LED       4     1    3
SVGA      1     3    2
XGA       3     2    9

相关问题 更多 >