Преобразовать кортеж вывода цикла в питон Dataframe - PullRequest
0 голосов
/ 26 мая 2019

Привет всем, я выполняю в Knime код Python, найденный на этом сайте здесь !с использованием расширения Knime-Python, но мне требуется экспортировать лучшие конфигурации 3 моделей в кадр данных, которые генерируются с помощью цикла for и представляются в виде кортежа.

Исходный последний бит кода -

if __name__ == '__main__':
    # load dataset
    series = read_csv('daily-total-female-births.csv', header=0, index_col=0)
    data = series.values
    print(data.shape)
    # data split
    n_test = 165
    # model configs
    cfg_list = sarima_configs()
    # grid search
    scores = grid_search(data, cfg_list, n_test)
    print('done')
    # list top 3 configs
    for cfg, error in scores[:3]:
        print(cfg, error)

и должен возвращать

done
[(0, 1, 2), (2, 0, 2, 0), 't'] 54.767582003072874
[(0, 1, 1), (2, 0, 2, 0), 'ct'] 58.69987083057107
[(1, 1, 2), (0, 0, 1, 0), 't'] 58.709089340600094

Поэтому я изменил код с 2 неудачными попытками следующим образом:

Попытка: 1

if __name__ == '__main__':
    # load dataset
    series = read_csv('C:\\Users\\Downloads\\shampoo.txt', header=0, index_col=0, date_parser=custom_parser)
    data = series.values
    print(data.shape)
    # data split
    n_test = 12
    # model configs
    cfg_list = sarima_configs()
    # grid search
    scores = grid_search(data, cfg_list, n_test)
    print('done')
    # list top 3 configs
    for cfg, error in scores[:3]:
        df=pd.DataFrame(cfg, error)
        output_table = df

Попытка: 2

if __name__ == '__main__':
    # load dataset
    series = read_csv('C:\\Users\\Downloads\\shampoo.txt', header=0, index_col=0, date_parser=custom_parser)
    data = series.values
    print(data.shape)
    # data split
    n_test = 12
    # model configs
    cfg_list = sarima_configs()
    # grid search
    scores = grid_search(data, cfg_list, n_test)
    print('done')
    # list top 3 configs
    for cfg, error in scores[:3]:
        df.append({'cfg': cfg, 'error': error},ignore_index=True)
    output_table = df

Дело в том, что Knime требует определить выходную таблицу, такую ​​как информационный кадр pandas, для выполнения узла (наименьшая обработкаединица измерения).

Я ожидаю определить output_table следующим образом (https://ibb.co/xCGqVtx)

Спасибо

1 Ответ

1 голос
/ 06 июня 2019

Проблема в том, что ваш основной код имеет структуру, подобную скрипту Python для командной строки, то есть он ожидает, что __name__ == '__main__'.На практике это не так.Вы можете попытаться добавить оператор print(__name__) вне конструкции if.Для узла Python Script я получаю builtins.

Поэтому удаление или корректировка оператора if решит проблему

...