【问题标题】:Open - Edit - Save - Loop csv files in a folder with python打开-编辑-保存-用python循环文件夹中的csv文件
【发布时间】:2020-11-23 14:27:36
【问题描述】:

我将收到一个包含 100 多个 .csv 文件的文件夹,我需要以同样的方式编辑它们。文件具有相同的结构。 文件夹如下所示: df1.csv df2.csv df3.csv ... df100.csv。我需要打开所有文件 - 编辑它们 - 然后将它们保存为“df1-edited”、“df2-edited”等等。

根据每个 df,代码运行完美。我不确定如何在每个文件中自动运行它并相应地保存它们。 这是我的代码:

import pandas as pd

df = pd.read_csv('df1.csv')

[Edit steps here]

df.to_csv("df1-edited.csv", index=None, encoding='utf-8-sig', decimal=',')

谢谢!

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    为此,您可以使用标准库中适用于您的操作系统的模块。

    基本上,您需要找到文件夹中的所有.csv 文件并对其进行迭代。

    让我们使用pathlib。这未经测试,但类似这样的东西应该可以工作:

    from pathlib import Path
    import pandas as pd
    
    csv_folder = Path('path/to/csvs')
    
    for file in csv_folder.glob('*.csv'): #create iteratable & iterate on it.
        df = pd.read_csv(file)
        # do stuff
        new_file_name = file.parent.joinpath(f"{file.stem}-edited.csv")
        df.to_csv(new_file_name, index=None, encoding='utf-8-sig', decimal=',')
    

    【讨论】:

    • 非常感谢@Manakin。它确实有效,但它只保存最后一个df。由于某种原因,它不能正确循环。有什么想法吗?
    • @CCRo 您是否将最后一行放在 for 循环之外?
    • 解决了!问题是我的 [do stuff] 代码没有缩进。非常感谢!
    • 回到这个话题,能否请您指导我如何将新文件单独保存在新创建的文件夹中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多