如何显示所有交互的交叉表?

时间:2018-07-12 13:47:12

标签: python-3.x pandas data-science

我有一个数据集(以简化形式)如下:

import pandas as pd df = pd.DataFrame({"target":[20,30,40], "x1":[1,0,1], "x2":[0,1,1], "x3":[0,0,1]}

我想找到所有可能的两变量target交互的(x_i, x_j)的平均值。因此输出应如下所示:

enter image description here

我该如何在熊猫上做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用pivot_table并通过reindex创建的MultiIndex添加不存在的值from_product

df = df.pivot_table(index='x1',columns=['x2','x3'], values='target')
mux = pd.MultiIndex.from_product(df.columns.levels, names=df.columns.names)
df = df.reindex(columns=mux)
print (df)
x2     0         1      
x3     0   1     0     1
x1                      
0    NaN NaN  30.0   NaN
1   20.0 NaN   NaN  40.0

如果要将NaN替换为0

df = df.pivot_table(index='x1',columns=['x2','x3'], values='target', fill_value=0)
mux = pd.MultiIndex.from_product(df.columns.levels, names=df.columns.names)
df = df.reindex(columns=mux, fill_value=0)
print (df)

x2   0      1    
x3   0  1   0   1
x1               
0    0  0  30   0
1   20  0   0  40