Python 将对称对的数据帧转换为透视表
我有一个对称的比较数据帧(df)。a对b=2,所以b对a也是2。自我比较从未列出,但我想将其列为“0”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'
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无