2016-04-12 116 views
0

我有一個熊貓數據幀,看起來是這樣的:如何將熊貓數據框轉換爲兼容熱圖的數據框?

Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee'] 
Cols = ['A', 'B', 'C', 'D'] 
df = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols) 

基本上我想用matplotlibs ax.pcolor()使r_value列的熱圖,但是:

x_specie y_species   r_value  irrelevant 
0 name1 name2 0.46042854769889 1.08625581318480 
1 name3 name4 0.08520026289205 0.31828185948920 
2 name5 name6 0.59751876928376 0.03611201620948 
3 name7 name8 0.21827455728522 1.28464913995526 
4 name9 name10 0.03241820474363 0.69957843027741 

同樣的事情也可以生成我需要先將這些數據轉換成我認爲是這樣的適當格式:

 name2  name4  name6 name8 name10 
name1 r_value1 ...  ...    ... 
name3 ...  ... 
name5     ... 
name7        ... 
name9 ...         ... 

與r_values填充表在正確的地方(請注意,雖然上面的虛擬數據不包括我的實際數據所有可能的組合)。

這樣做最簡單的方法是什麼?在此先感謝

+3

對不起,您在'df.pivot(index ='x_specie',columns ='y_species',values ='r_value')''之後? – EdChum

+0

正是我所追求的。似乎熊貓已經想到了一切......謝謝! – CiaranWelsh

回答

3

您可以使用pivot_tablefillna獲取x和y物種的所有組合(填充NaNs爲0)。

import matplotlib.pyplot as plt 
import pandas as pd 

pivoted_table = df.pivot(index='x_specie', columns='y_species', values='r_value') 
pivoted_table.fillna(0, inplace=True) 
plt.pcolor(pivoted_table.values, cmap=plt.cm.Reds) 
plt.show() 
相關問題