Pandas / Python:通过更改值来生成数据透视表

时间:2018-11-03 21:40:17

标签: python pandas dataframe pivot

我有一个空列表,希望使用透视数据框填充该列表,目的是循环遍历该列表以使用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。我觉得有一种更简单的方法可以完成此操作,并期待您的建议。预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题是您在以下行:df中分配了数据透视表df = df.pivot(index = 'y', columns = 'x', values = c)。然后,在下一个迭代中,它将尝试透视此没有y-colun的透视表。如果您将枢轴分配给df2,然后将其附加到绘图列表,则它的作用就像一个超级魅力:)

另一方面;我不知道您要绘制的内容,方式和原因,但是我觉得可能会有更直接的方法。如果您显示预期的输出,我可以看一下。