我使用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
我无法理解如何创建新数据框,而不包括例如变量"放弃" (即删除对应于&#34的列和行;放弃")。
首先,我尝试过选择一个列来了解如何创建我想要的变量列表:
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矩阵。
答案 0 :(得分: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 :(得分:1)
这是一个带有row-col索引的
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