我有一个对称的比较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
答案 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