панды сгруппированы сосчитать сосуществования - PullRequest
1 голос
/ 11 марта 2019

Я хочу получить сходство стран по продуктам. У меня есть такой 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

это то, что я пробовал, но он не может добавить второй слой .. Любое предложение?

1 Ответ

2 голосов
/ 11 марта 2019

Я полагаю, вам нужно 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...