【问题标题】:Removing corresponding rows/columns in matrix using python使用python删除矩阵中的相应行/列
【发布时间】:2017-07-10 06:29:26
【问题描述】:

我正在使用 pandas/numpy 处理 1400x1400 相关矩阵,我的目标是删除使用给定变量名称的行和列。每一行和每一列都有变量的名称以及这两个变量之间的相关性:

            abandon abhorrent abominable
abandon     1.00    0.12      0.10
abhorrent   0.12    1.00      0.99
abominable  0.10    0.99      1.00

要将数据帧转换为矩阵,我使用 as_matrix:

datafile = pd.read_csv('data.csv')
df_matrix = datafile.as_matrix

我无法理解如何在不包括变量“abandon”的情况下创建新数据框(例如,删除与“abandon”对应的列和行)。

首先,我尝试只选择一个列来了解如何创建我想要的变量列表:

df_matrix = datafile.as_matrix(columns=['abhorrent'])

但是,这仅返回数组,我丢失了所有行/列名称。

我还尝试在导入数据后删除行/列。这将要求我采取额外的步骤来形成我不想要的变量名称列表,然后将它们作为列/行号传递,但这似乎是可行的。但是我不确定这段代码是否完全正确:

df_matrix2 = np.delete(df_matrix, 1, axis=0)
df_matrix2 = np.delete(df_matrix, 1, axis=1)

据我所知,这段代码不会在新矩阵中产生任何变化。它仍然是一个 1400x1400 的矩阵。

【问题讨论】:

    标签: python pandas numpy matrix


    【解决方案1】:

    你可以使用DataFrame.drop()方法:

    In [9]: df
    Out[9]:
                abandon  abhorrent  abominable
    abandon        1.00       0.12        0.10
    abhorrent      0.12       1.00        0.99
    abominable     0.10       0.99        1.00
    
    In [10]: df.drop('abandon', 1).drop('abandon')
    Out[10]:
                abhorrent  abominable
    abhorrent        1.00        0.99
    abominable       0.99        1.00
    

    【讨论】:

      【解决方案2】:

      这是一个带有行列索引的 -

      In [32]: df
      Out[32]: 
                  abandon  abhorrent  abominable
      abandon        1.00       0.12        0.10
      abhorrent      0.12       1.00        0.99
      abominable     0.10       0.99        1.00
      
      In [33]: strg = 'abandon'
      
      In [34]: df.iloc[df.index!=strg, df.columns!=strg]
      Out[34]: 
                  abhorrent  abominable
      abhorrent        1.00        0.99
      abominable       0.99        1.00
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-09
        • 2012-10-14
        • 1970-01-01
        • 2020-01-25
        • 1970-01-01
        • 2019-07-08
        • 2020-01-07
        • 1970-01-01
        相关资源
        最近更新 更多