当前位置: 首页 > 面试题库 >

融化pandas数据框的上三角矩阵

昝卓
2023-03-14
问题内容

给定以下形式的方形熊猫DataFrame:

   a  b  c
a  1 .5 .3
b .5  1 .4
c .3 .4  1

如何能在上三角熔化得到以下形式的矩阵

 Row     Column    Value
  a        a       1
  a        b       .5 
  a        c       .3
  b        b       1
  b        c       .4
  c        c       1

#Note the combination a,b is only listed once.  There is no b,a listing

我对惯用的熊猫解决方案更感兴趣,自定义索引器将很容易手动编写…

预先感谢您的考虑和回应。


问题答案:

首先,我将的较低值转换dfNaNbywherenumpy.triuand
stackreset_index然后设置列名称:

import numpy as np

print df
     a    b    c
a  1.0  0.5  0.3
b  0.5  1.0  0.4
c  0.3  0.4  1.0

print np.triu(np.ones(df.shape)).astype(np.bool)
[[ True  True  True]
 [False  True  True]
 [False False  True]]

df = df.where(np.triu(np.ones(df.shape)).astype(np.bool))
print df
    a    b    c
a   1  0.5  0.3
b NaN  1.0  0.4
c NaN  NaN  1.0

df = df.stack().reset_index()
df.columns = ['Row','Column','Value']
print df

  Row Column  Value
0   a      a    1.0
1   a      b    0.5
2   a      c    0.3
3   b      b    1.0
4   b      c    0.4
5   c      c    1.0


 类似资料:
  • 问题内容: 我正在尝试创建一个矩阵以显示Pandas数据框中的行之间的差异。 我要这样: 要变成这样(差异垂直): 这是可以通过内置函数实现的,还是需要构建一个循环以获得所需的输出?谢谢你的帮助! 问题答案: 这是numpy广播的标准用例: 我们使用values属性访问基础的numpy数组,并引入了一个新轴,因此结果是二维的。 您可以将其与原始系列结合使用: 由于@Divakar,也可以使用以下命

  • 问题内容: 我有一个矩阵,我想要2个矩阵,所以包含A的上三角元素(所有元素在对角线以上且不包括对角线),以及类似的for (所有元素在下面的且不对角线)。有没有办法做到这一点? 例如 问题答案: 尝试(上三角)和(下三角)。

  • 问题内容: 我有3个CSV文件。每个人都有第一列作为人物的(字符串)名称,而每个数据框中的所有其他列都是该人物的属性。 如何将所有三个CSV文档“连接”在一起以创建单个CSV,并且每一行都具有该人的字符串名称的每个唯一值的所有属性? 中的函数指定我需要一个多索引,但是我对层次化索引方案与基于单个索引进行联接有何关系感到困惑。 问题答案: 假设进口: John Galt的答案基本上是一项手术。如果我

  • 问题内容: 这是我拥有的python矩阵的简短版本。我的信息在上方的三角形中。有简单的功能将矩阵的上三角复制到下三角吗? 问题答案: 要在NumPy中执行此操作,而无需使用双循环,可以使用。请注意,根据矩阵的大小,这可能会比添加转置和减去对角线慢一些,尽管此方法可能更具可读性。 注意不要混用,因为它们都使用行主索引,也就是说,这行不通:

  • 问题内容: 我需要删除pandas中数据框的前三行。 我知道会删除最后一行,但我不知道如何删除前n行。 问题答案: 用途: 将为您提供一个没有前三行的新df。

  • 这是我的审判,但它没有涵盖一切,也在重复,我做错了什么?