python - 屏蔽 pandas DataFrame 的下三角部分

标签 python pandas dataframe

这是我生成的数据帧输出,它是一个 5 x 5 相关矩阵。

     A         B          C          D          E
A    1.00000  -0.277360   0.653920  -0.479600   0.513890
B   -0.27736   1.000000  -0.790648   0.885801  -0.482763
C    0.65392  -0.790648   1.000000  -0.876451   0.672148
D   -0.47960   0.885801  -0.876451   1.000000  -0.756182
E    0.51389  -0.482763   0.672148  -0.756182   1.000000

我想获取此数据框的总体平均值,但为此我需要忽略重复值(仅保留第一次出现的值)。我尝试使用

df.drop_duplicates(inplace=True)

但是,它返回未更改的 df,我认为这是因为 drop_duplicates() 将删除行,但不会用 NaN 替换单个单元格。

关于如何实现这一点有什么建议吗? (下面是所需的输出)

请注意,我还需要专门删除相关性 == 1,因为它们是不必要的。

     A         B          C          D          E
A    NaN      -0.277360   0.653920  -0.479600   0.513890
B    NaN       NaN       -0.790648   0.885801  -0.482763
C    NaN       NaN        NaN       -0.876451   0.672148
D    NaN       NaN        NaN        NaN       -0.756182
E    NaN       NaN        NaN        NaN        NaN     

最佳答案

检查 tril_indices

df.values[np.tril_indices(len(df))]=np.nan
df
    A        B         C         D         E
A NaN -0.27736  0.653920 -0.479600  0.513890
B NaN      NaN -0.790648  0.885801 -0.482763
C NaN      NaN       NaN -0.876451  0.672148
D NaN      NaN       NaN       NaN -0.756182
E NaN      NaN       NaN       NaN       NaN

关于python - 屏蔽 pandas DataFrame 的下三角部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54049139/

相关文章:

python - Pandas 数据框的切片列在从该列创建的新对象中不断提及原始列名称

python - 对数据框中特定列的重复行求和

python - CSV 文件中的逗号和双引号

python - 可以用mock_open来模拟串口连接吗?

python - XML 阅读器似乎忽略了标签层次结构

python - 通过与另一个系列进行比较来查找数据框的索引值

python - 为什么 pandas 数据帧将整数转换为 float 据类型

python - Pandas - 查找 2 个依赖属性的最大计数并用该值替换重复行

r - 是否有一个好的 R 函数来分隔两个数据帧之间的唯一列值,并保留行?

python - 如何在 Python 数据框中为 boolean 函数添加下标?