2014-12-05 67 views
1

我有一個包含布爾值的NxN熊貓數據框。例如:真值的行列索引

In[56]: df 
Out[56]: 
     15  25  35  45  55 
10 True False False False False 
20 False True False False False 
30 False False True False False 
40 False False False True False 
50 False False False False True 

我需要做的是摺疊此框架爲NX2大熊貓據幀,其具有在路口的記錄值有True索引和列的值。例如:

In[62]: res 
Out[62]: 
    0 1 
0 10 15 
1 20 25 
2 30 35 
3 40 45 
4 50 55 

似乎無法找到一個簡單的方法來做到這一點。

回答

1

pd.melt 「unpivots」 從廣角至長格式的數據幀:

result = pd.melt(df.reset_index(), id_vars=['index']) 
mask = result['value'] == True 
result = result.loc[mask, ['index', 'variable']] 
result.columns = [0, 1] 
print(result) 

產生

 0 1 
0 10 15 
6 20 25 
12 30 35 
18 40 45 
24 50 55 

PS。你想要的DataFrame有兩列,它們的值可以作爲座標。 df.pivot方法將帶有類似座標的列的DataFrame轉換爲像您的原始DataFrame那樣的「寬格式」DataFrame。當你想以另一種方式時,使用pd.melt

+0

非常感謝 – 2014-12-05 18:52:02