2015-09-05 145 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

該多好啊。不知道我們可以做到這一點 –