用Python建立列联表

时间:2019-03-13 12:30:38

标签: python pandas data-structures

我正在尝试使用pandas在python中建立列联表。这是我的数据,看起来像是熊猫数据框

InvoiceNo Item Quantity
123        a     1
123        b     2
123        c     1
124        a     1
124        d     3
125        c     1
125        b     2

因此,我需要建立一个表格,在这里我可以轻松地选择一起购买的东西,如下所示

一起购买的物品:

   a  b  c  d
a  2  1  1  1
b  1  2  2  0
c  1  2  2  0
d  1  0  0  1

在这里,对角线元素代表所有发票中物料的频率。

如何有效地构建此结构?

1 个答案:

答案 0 :(得分:1)

使用DataFrame.mergecrosstab进行交叉联接,并清理索引和列名DataFrame.rename_axis

df = df.merge(df, on='InvoiceNo')
df = pd.crosstab(df['Item_x'], df['Item_y']).rename_axis(None).rename_axis(None, axis=1)
print (df)
   a  b  c  d
a  2  1  1  1
b  1  2  2  0
c  1  2  2  0
d  1  0  0  1