通过更改“Values”参数生成数据透视帧

2024-10-03 21:31:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个空列表,我想用数据透视框填充,目的是在列表上循环使用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之后的所有列创建一个重塑/透视的数据帧。我想把一个列标题字符串传递给df.pivot()values,类似于以下内容:

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_table()代替df.pivot(),但那会抛出一个KeyError来代替'ele2'。我有一种感觉,有一个更简单的方法来做这件事,并期待您的建议。提前感谢您的帮助


Tags: columns数据dataframedf列表fordslist
1条回答
网友
1楼 · 发布于 2024-10-03 21:31:02

问题是您将pivot表向后分配到这一行:df。在下一次迭代中,它将尝试透视这个透视表,它没有y-colun。如果您将pivot指定给df2,然后将其附加到绘图列表中,它就像一个符咒:)

在另一个音符上;我不知道你在策划什么,怎么策划,为什么策划,但我觉得可能有更直接的方法。如果你展示你的预期成果,我可以看看

相关问题 更多 >