преобразовать фрейм данных симметричных пар в сводную таблицу - PullRequest
0 голосов
/ 31 мая 2018

У меня есть Pandas dataframe (df) сравнений, которые симметричны.a против b = 2, поэтому b против a также равно 2.Сам сравнения не указаны, но я бы хотел перечислить их как '0'.

import pandas as pd
df = pd.DataFrame(columns=['Col1','Col2','Col3','Col4','Col5'])
df['Col1'] = ['a','a','a','b','b','c']
df['Col2'] = ['b','c','d','c','d','d']
df['Col3'] = [2,3,4,5,6,7]
df['Col4'] = ['ignore_me']*6
df['Col5'] = ['ignore_me']*6

Я могу избавиться от столбцов, которые мне не интересны, потому что они названы.

small_df = df.drop(['Col4', 'Col5'], axis=1)
>>> small_df
  Col1 Col2  Col3
0    a    b     2
1    a    c     3
2    a    d     4
3    b    c     5
4    b    d     6
5    c    d     7

Есть ли функция, которая преобразует эти small_df пары в сводную таблицу, как одну из этих 3?нижний треугольник, верхний треугольник или оба не имеют значения

    a   b   c   d           a   b   c   d           a   b   c   d
a   0                   a   0   2   3   4       a   0   2   3   4
b   2   0               b       0   5   6       b   2   0   5   6
c   3   5   0           c           0   7       c   3   5   0   7
d   4   6   7   0       d               0       d   4   6   7   0

1 Ответ

0 голосов
/ 31 мая 2018

Немного отличается от ваших результатов (несуществующие отношения не заполнены), но то, что вы описываете, представляет собой pivot_table

df.pivot_table(index='Col1', columns='Col2', values='Col3', fill_value=0)

Col2  b  c  d
Col1
a     2  3  4
b     0  5  6
c     0  0  7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...