Python 将数据帧复制到数量总和中的复制矩阵
是否可以将此数据帧转换为总和中的重复矩阵 预期产出:Python 将数据帧复制到数量总和中的复制矩阵,python,pandas,dataframe,Python,Pandas,Dataframe,是否可以将此数据帧转换为总和中的重复矩阵 预期产出: 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,
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')
这里的键似乎是“ID”列,因为每个类型单元格的值是根据这些类型是否为同一ID共存而计算的 因此,从“ID”上的自合并开始。然后,您可以旋转结果以获得矩阵
合并
+交叉表
merge
+pivot\u表
LED SVGA XGA
LED 4 1 3
SVGA 1 3 2
XGA 3 2 9
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
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