我想按产品获得国家的亲和力。
我有这样的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
关于python - Pandas groupby count共存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55096423/