Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将对称对的数据帧转换为透视表_Python_Pandas - Fatal编程技术网

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

Python 将对称对的数据帧转换为透视表,python,pandas,Python,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'

我有一个对称的比较数据帧(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

与您的结果略有不同(不存在的关系未填充),但您描述的是一个
pivot\u表

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

我喜欢这样。您可以在两个轴上重新建立索引以获得所有的自关系。谢谢,这可以很好地处理非对称比较,但为了节省时间,我只使用其中一个,而不是两个;a、 b=2有b,a=2无