我希望通过产品获得各国的亲和力。我有这样一个df:
cntr prod
0 fr cheese
1 ger potato
2 it cheese
3 it tomato
4 fr wine
5 it wine
6 ger cabbage
7 fr cabbage
我试图获得一系列产品的共存矩阵,这将告诉我各国的亲和力,如下:
fr ger it
fr 1 2
ger 1 0
it 2 0
我的测试是第一次尝试添加第三维以进行交叉组
fr fr
ger 1
it 2
ger fr 1
ger
it 0
it fr 2
ger 0
it
这是我试过的,但它没有添加第二层..任何建议?
解决办法:我相信你需要merge交叉与加盟crosstab,并在必要时设置对角NaN的numpy.fill_diagonal:
df = pd.merge(df, df, on='prod')
df = pd.crosstab(df['cntr_x'], df['cntr_y']).astype(float)
np.fill_diagonal(df.values, np.nan)
print (df)
cntr_y fr ger it
cntr_x
fr NaN 1.0 2.0
ger 1.0 NaN 0.0
it 2.0 0.0 NaN








暂无数据