2015-09-05 153 views
1

我有一个拥有密集秩矩阵的熊猫数据框,并且想要选择所有具有2的单元格。然后将它转换为如下所示的结果数据框。我循环遍历每一列和行,只是for循环,但有没有更好的方法?从熊猫密度级数据框中选择一定的值

DF看起来像

A B C ........ x 2000 columns 
AA 1 3 2 
BB 2 1 3 
CC 2 2 1 
. 
. 
. 
x 
2000 rows 

results_df要像

Col1 Col2 
0 A  BB 
1 A  CC 
2 B  CC 
3 C  AA 

回答

1

这是一种方法。

rows, cols = np.nonzero((df==2).values) 

results_df = pandas.DataFrame({ 
    'Col1':[df.columns[c] for c in cols], 
    'Col2':[df.index[r] for r in rows] 
}).sort('Col1').reset_index(drop=True) 

例如:

In [88]: df 
Out[88]: 
    A B C 
AA 1 3 2 
BB 2 1 3 
CC 2 2 1 

In [89]: pandas.DataFrame({'Col1':[df.columns[c] for c in cols], 'Col2':[df.index[r] for r in rows]}).sort('Col1').reset_index(drop=True) 
Out[89]: 
    Col1 Col2 
0 A BB 
1 A CC 
2 B CC 
3 C AA 
+0

该多好啊。不知道我们可以做到这一点 –