繁体   English   中英

如何从包含 python 中的多个 csv 文件的文件夹中一次读取一个文件

[英]How to read one file at a time from folder that contains multiple csv files in python

我有一个包含数百个 CSV 文件的文件夹。 如果存在列(检查酒列),我需要检查每个文件。 如果存在列,则将其保存在文件夹中而不做任何事情,如果列不存在,则添加列并将其保存在文件夹中。

问题是 python 代码正在读取多个 CSV 文件而不是一个 CSV 文件。 我无法编写仅读取一个文件的 python pandas 逻辑,检查列是否存在并保存在文件夹中。

输入文件1

A   B   C   D   E   F   Distance    G   H   I   J   L   K
0   05:58.0 0   2869421 1400.862536 0   0   0.777879166 0   1   7   5   test

输入文件2

A   B   C   D   E   F   Distance    wine    H   I   J   L   K
0   1/12/2021 4:05  0   2869421 15000   0   50  0.777879166 0   1   7   5   test2

如您所见,输入文件 1 的葡萄酒列不存在,因此我需要在其他输入文件 2 的葡萄酒列存在时进行一些操作,因此我不执行任何操作。

到目前为止,这是我循环浏览文件夹中文件的代码。 但是,这会遍历所有文件:

def main(path_csv,path_save, verbose):
    if (".csv" in str(path_csv).lower()) and path_csv.is_file():
        csv_files = [Path(path_csv)]
    else:
        csv_files = list(Path(path_csv).glob("*.csv"))
    
    all_dfs_1 = pd.DataFrame()
            
    for fn in csv_files:
        all_dfs_1 = pd.read_csv(fn,header=0)
        #print(all_dfs_1)
        if 'wine' not in all_dfs_1.columns:
            all_dfs_1.insert(all_dfs_1.columns.get_loc('Distance')+1,'wine','0')
        all_dfs_1 = pd.DataFrame(all_dfs_1)
    x = os.path.splitext(fn.name)[0]    
    all_dfs_1.to_csv(os.path.join(path_save,f"{x}.csv"),index=False)   

如何一次只循环一个文件?

在此附上 Python 代码和文件

IIUC 更改最后 2 行的indentation并删除all_dfs_1 = pd.DataFrame()all_dfs_1 = pd.DataFrame(all_dfs_1)

def main(path_csv,path_save, verbose):
    if (".csv" in str(path_csv).lower()) and path_csv.is_file():
        csv_files = [Path(path_csv)]
    else:
        csv_files = list(Path(path_csv).glob("*.csv"))
        
     for fn in csv_files:
            all_dfs_1 = pd.read_csv(fn,header=0)
            #print(all_dfs_1)
            if 'wine' not in all_dfs_1.columns:
                all_dfs_1.insert(all_dfs_1.columns.get_loc('Distance')+1,'wine','0')
            x = os.path.splitext(fn.name)[0]    
            all_dfs_1.to_csv(os.path.join(path_save,f"{x}.csv"),index=False)   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM