2017-02-20 124 views
3

我正在使用熊猫/ numpy使用1400x1400相关矩阵,我的目标是删除使用给定变量名称的行和列。每行和每列有变量的名称和这两个变量之间的相关性:使用python删除矩阵中相应的行/列

  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 

我无法理解如何创建一个新的数据框,而不包括例如变量“放弃”(即,删除与“放弃”相对应的列和行)。

首先,我试图尝试只选择一列得到的我怎么可能会创建的,我想变量列表的理解:

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矩阵。

回答

2

您可以使用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 
1

这里有一个具有行山坳索引 -

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