Py学习  »  Python

将for循环输出元组转换为数据帧python

Aureon • 4 年前 • 309 次点击  

大家好,我在Knime中执行的每个人都是这个网站上的一个python代码。 here !,使用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

因此,我用两次失败的尝试修改了代码,如下所示:

尝试: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数据帧来执行节点(最小的处理单元)。

我希望像下图那样定义输出表格( https://ibb.co/xCGqVtx )

谢谢你

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38211
 
309 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Mykhailo Lisovyi
Reply   •   1 楼
Mykhailo Lisovyi    4 年前

问题是您的主代码的结构类似于命令行python脚本,也就是说,它期望 __name__ == '__main__' . 实际上,情况并非如此。您可以尝试添加 print(__name__) 声明在 if 施工。对于 Python Script 节点,我得到 builtins .

因此,删除或调整if语句可以解决问题