我想按产品获得国家的亲和力。
我有这样的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


这是我尝试过的方法,但是无法添加第二层。
有什么建议吗?

最佳答案

我相信您需要mergecrosstab进行交叉连接,并在必要时通过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/

10-12 16:50