Создание поворотных панелей данных Pandas путем изменения аргумента «Значения» - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть пустой список, который я хочу заполнить поворотными фреймами данных с целью циклического перемещения по списку для создания тепловых карт с использованием 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 из 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 для 'ele2'. У меня есть ощущение, что есть более простой способ сделать это, и жду ваших предложений. Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 04 ноября 2018

Проблема заключается в том, что вы присваиваете сводную таблицу обратно df в этой строке: df = df.pivot(index = 'y', columns = 'x', values = c). На следующей итерации он попытается повернуть эту сводную таблицу, которая не имеет y -колон. Если вы назначите опору для df2, а затем добавите ее в свой список, она будет работать как шарм:)

на другой ноте; Я не знаю, что и как и почему вы планируете, но я чувствую, что может быть более простой способ. Если вы покажете свой предполагаемый результат, я мог бы посмотреть.

...