pd *_*had 1 python numpy dataframe pandas
我有一个这样的数据框。发票转换为一个表,其中每行都有一个产品。该表由数百万行组成 -
| 发票 | 产品 |
|---|---|
| INVC1 | xx |
| INVC1 | yy |
| INVC1 | Z Z |
| INVC1 | 啊 |
| INVC2 | xx |
| INVC2 | 啊 |
| INVC2 | BB |
| INVC2 | 抄送 |
现在我想创建一个如下所示的表格,在其中我可以看到每种产品与其他产品一起购买的次数 -
| xx | yy | Z Z | 啊 | BB | 抄送 | |
|---|---|---|---|---|---|---|
| xx | 0 | 1 | 1 | 2 | 1 | 1 |
| yy | 1 | 0 | 1 | 1 | 0 | 0 |
| Z Z | 1 | 1 | 0 | 1 | 0 | 0 |
| 啊 | 2 | 1 | 1 | 0 | 1 | 1 |
| BB | 1 | 0 | 0 | 1 | 0 | 1 |
| 抄送 | 1 | 0 | 0 | 1 | 1 | 0 |
有没有 numpy/pandas 方法来创建这样的表?或者,有没有任何优化的方法来做到这一点。
pd.crosstab那么我们就用dot
s = pd.crosstab(df['invoice'],df['products'])
out = s.T.dot(s)
Out[196]:
products aa bb cc xx yy zz
products
aa 2 1 1 2 1 1
bb 1 1 1 1 0 0
cc 1 1 1 1 0 0
xx 2 1 1 2 1 1
yy 1 0 0 1 1 1
zz 1 0 0 1 1 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |