【问题标题】:How to integrate a function into a loop?如何将函数集成到循环中?
【发布时间】:2022-06-15 20:34:35
【问题描述】:

我有一个可以正常工作的功能。我下载了一些以城市命名的 csv 文件,然后输入函数名称(城市名称),该函数处理数据并给我一个情节图。由于我有很多城市并且不想手动访问它,我想通过城市名称的列表进行交互。我只是在我的函数之外放了一个 for 循环,它不起作用,我不知道为什么。没有循环,该功能可以正常工作。有什么想法可以遍历城市名称吗?

看起来像这样:

for cityname in list_of_names:
    def transformcsv_toplot(cityname):
        df = pd.read_csv(f'Input\{cityname}.csv', sep=";", index_col=[0])
        df = df.sort_index()
        dff = df.unstack().reset_index()
        dff.columns=['datetime', 'category']
        dff = dff.set_index('datetime')
        fig = px.scatter(dff, color='category')
    
        return fig.write_html(f'Graph/{cityname}_monthlydata.html')

我的 csv 文件位于单独的“输入”文件夹中。 csv 文件有城市名称,经过一些处理,我现在有一个城市名称列表,如下所示:

list_of_names = ['london', 'Liverpool', 'Paris']

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这会将你的循环放入你的函数中

    def transformcsv_toplot(list_of_names):
        for cityname in list_of_names:
            df = pd.read_csv(f'Input\{cityname}.csv', sep=";", index_col=[0])
            df = df.sort_index()
            dff = df.unstack().reset_index()
            dff.columns=['datetime', 'category']
            dff = dff.set_index('datetime')
            fig = px.scatter(dff, color='category')
        
            return fig.write_html(f'Graph/{cityname}_monthlydata.html')
    
    transformcsv_toplot(['london', 'Liverpool', 'Paris'])
    

    但是,return 将在第一次循环时完成循环,因此需要考虑如何更改它。例如,如果您只是写入文件位置,您可以取出返回,它将运行该函数 3 次(城市名称列表中的每个项目一次)并创建一个新文件,而不必具有返回功能调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2012-04-28
      相关资源
      最近更新 更多