我对python相当陌生,对pandas也很陌生。我试图做一个矩阵运算,我有一个名为sample_df
的矩阵,看起来像这样:
Set1 Set2 %overlap %unique for Set1 %unique for Set2
0 S 077 S2 077 98.790 0.01 0.02
1 S 080 S2 080 99.165 0.01 0.01
2 S 023 S2 023 98.490 0.01 0.02
3 S 080 S2 115 97.760 0.02 0.03
字符串
Set1和Set2各有3个值。
我正在尝试创建一个5x5矩阵,该矩阵以Set2的值作为列名
列1正下方的额外行需要包含与“Set 2”中的每个值对应的“Set 2的%unique”值。类似地,“Set 1”的每个值旁边的额外列需要包含"Set 1的%unique“的相应值。矩阵的其余部分对角填充”% overlap“中的相应值。
结果的df需要看起来像这样:
S2 077 S2 080 S2 030 S2 115
0.02 0.01 0.02 0.03
S 077 0.01 98.790
S 080 0.01 99.165
S 023 0.01 98.490
S 080 0.02 97.760
型
到目前为止,我通过旋转sample_df
创建了一个新的框架:sub_df = sample_df.pivot(index='Set1', columns='Set2', values='%overlap')
个
但这给了我一个“S 080”只出现一次的框架,并且在同一行中有两个值,分别是“S2 080”和“S2 115”,我希望它们在不同的行中。
我可以在矩阵中插入一个空的行和列,但是我不知道如何填充值,因为我不认为我可以使用sub_df.pivot
来完成这个任务(或者我没有正确使用它)。
1条答案
按热度按时间hc2pp10m1#
按照
MultiIndex.from_frame
创建的原始顺序将DataFrame.pivot
与DataFrame.reindex
一起使用:字符串
或者使用
DataFrame
构造函数,填充Series
的对角线:型