Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧复制到数量总和中的复制矩阵_Python_Pandas_Dataframe - Fatal编程技术网

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