将循环输出元组转换为dataframe python



大家好,我正在此网站上找到的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数据框以执行节点(最小的procesing单元(。

我希望像以下图像(https://ibb.co/xcgqvtx(

那样定义output_table。

谢谢

问题是您的主代码像命令行Python脚本一样结构,即期望__name__ == '__main__'。实际上,事实并非如此。您可以尝试在if构造之外添加print(__name__)语句。对于Python Script节点,我得到builtins

因此,请删除或调整IF语句将解决问题

最新更新