将对称对的数据帧转换为数据透视表

时间:2018-05-31 03:10:52

标签: python pandas

我有一个对称的比较Pandas数据帧(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 :(得分:2)

与您的结果略有不同(不存在不存在的关系),但您所描述的是 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