【问题标题】:Loop through multiple panda dataframes to get multiple dataframe output in Python循环遍历多个 panda 数据帧以在 Python 中获取多个数据帧输出
【发布时间】:2021-08-25 22:38:26
【问题描述】:

我通过在目录中循环 1000 个 csv 文件读取了 1000 个数据帧,我的代码如下:


for csv in csvs:
        df = pd.read_csv(csvs)
        dfs.append(df)

所以基本上我有dfs[0]dfs[999]。然后我创建了一个名为fun 的函数来应用于所有这些数据帧。如果只有几个数据帧要通过,我会做 output = fun(dfs[0])output2 = fun(dfs[1]) 等等,但由于我有这么多数据帧,我想以某种方式循环它们,这样我就可以获得 1000 个单独的输出 1000单独的数据框。这可行吗?另外,有没有办法一次将所有这些输出数据帧导出到 csv 文件中?我以前从未同时处理过这么多数据帧,如果有人能帮助我,我将不胜感激。提前谢谢!

【问题讨论】:

    标签: python pandas dataframe loops for-loop


    【解决方案1】:

    您可以像使用循环读取 csv 一样进行操作

    results = []
    for df in dfs:
        results.append(fun(df))
    

    或者您可以使用类似的列表理解来做到这一点

    results = [fun(df) for df in dfs]
    

    至于将数据帧写入 csvs,从技术上讲,它不会“立即”。一次只能读取一个文件,但是可以,您可以使用类似于这样读取它们的循环来遍历它们。

    for df, filename in zip(dfs, filenames):
        df.to_csv(filename)
    

    filenames 是一个包含 1000 个文件名的列表,这些文件名对应于您要将数据帧写入其中的 csv 文件名。

    【讨论】:

    • 如果我只想循环通过 dfs[0] 到 dfs[996],而不是每个数据帧,有没有办法指定范围?
    • 是的,你可以通过列表切片来做到这一点。因此,在这种情况下,您将使用dfs[:997] 将 dfs[0] 转换为 dfs[996],包括 dfs[996]。或dfs[5:10] 获取 dfs[5] 到 dfs[9]。所以在 for 循环中它看起来像:for df in dfs[:997]:
    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多