我有一个空列表,希望使用透视数据框填充该列表,目的是循环遍历该列表以使用Seaborn生成热图。
原始数据框看起来像:
x y ds_ic ele1 ele2 ele3 ele4
0 0 0.394888 18.8099 25.468 7.03E-15 0.417225
0 1 0.3990888 20.5525 23.54 0 0.331358
0 2 0.3901616 22.6762 19.5485 3.63E-11 0.448073
0 3 0.3838604 24.4072 27.781 0 0.406801
0 4 0.387536 21.6036 23.8371 0 0.263638
0 5 0.387536 23.4229 22.542 4.30E-14 0.395689
我正在使用以下代码来重塑数据并使其适合绘图:
def mapShape(dataframe_list):
plotList = []
for df in dataframe_list:
df = df.pivot(index = 'y', columns = 'x', values = 'ds_ic')
plotList.append(df)
return plotList
shaped_dataframes = mapShape(simplified_dataframes)
simplified_dataframes
是上面所看到的原始数组形式的数据帧列表。可以很好地绕过我选择的单个列(即,每当我手动设置values
时)。
目标是在 x-y之后为所有列制作一个重塑/旋转的数据框。我想到将列标题字符串传递给values
的{{1}},类似于以下内容:
df.pivot()
当我尝试此操作时,columns = ['ds_ic', 'ele1', 'ele2', 'ele3', 'ele4']
def mapShape(dataframe_list):
plotList = []
for df in dataframe_list:
for c in columns:
df = df.pivot(index = 'y', columns = 'x', values = c)
plotList.append(df)
return plotList
shaped_dataframes = mapShape(simplified_dataframes)
为df.pivot()
抛出KeyError
。我尝试用'y'
代替df.pivot()
,但是这将df.pivot_table()
替换为KeyError
。我觉得有一种更简单的方法可以完成此操作,并期待您的建议。预先感谢您的帮助!
答案 0 :(得分:0)
问题是您在以下行:df
中分配了数据透视表df = df.pivot(index = 'y', columns = 'x', values = c)
。然后,在下一个迭代中,它将尝试透视此没有y
-colun的透视表。如果您将枢轴分配给df2
,然后将其附加到绘图列表,则它的作用就像一个超级魅力:)
另一方面;我不知道您要绘制的内容,方式和原因,但是我觉得可能会有更直接的方法。如果您显示预期的输出,我可以看一下。