2016-04-12 35 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() 
相关问题