【问题标题】:pandas: import multiple csv from subfolders if the name contains specific textpandas:如果名称包含特定文本,则从子文件夹导入多个 csv
【发布时间】:2020-07-31 06:55:46
【问题描述】:

我有一个位于 C:\Users\Documents\folder 的文件夹,在该文件夹内有 500 个随机命名的子文件夹。每个子文件夹都有多个 csv 文件。我想导入 csv 文件,只要它们的名称包含来自这些子文件夹的单词 client 并将导入的文件连接到一个数据帧中(希望我不会有任何 RAM 问题)。

有人可以帮忙吗?非常感谢。

【问题讨论】:

    标签: python pandas import python-import


    【解决方案1】:

    我认为应该这样做:

    import os
    import pandas as pd
    
    source_dir = r'C:\Users\Documents\folder'
    
    my_list = []
    
    for root, dirnames, filenames in os.walk(source_dir):
        for f in filenames:
    
            if 'client' in f:
    
                my_list.append(pd.read_csv(os.path.join(root, f)))
    
    concatted_df = pd.concat(my_list)
    

    【讨论】:

    • 谢谢。我试过你的代码,我得到了 ValueError: No Objects to concatenate....
    • 可能您需要在某处指定 .csv 格式(?)
    • 如果文件名包含单词 client,此解决方案有效。 .csv 扩展名是从 f 行中的 if 'client' 推导出来的。文件是否包含单词客户端或文件夹?文件夹中是否还有其他不应包含的 .csv?
    • THX。每个子文件夹包含 3 或 4 个 csv 文件。其中只有 1 或 2 个包含“客户”一词。所以应该排除一些csv。我再次运行代码,我有 UnicodeDecodeError: 'utf-8' codec can't be decode byte 0xbc in position 2: invalid startbyte.
    • 您可以根据需要更改“客户端”文本字符串。至于您的编码错误,也许这会有所帮助。 stackoverflow.com/questions/18171739/….
    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2020-05-03
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多