当前位置: 首页 > 知识库问答 >
问题:

如何使用熊猫导入多个 csv 文件并连接成一个数据帧

夔博
2023-03-14

我遇到问题< code >没有要连接的对象。我不能进口。csv文件,将它们连接成一个数据帧。我在用熊猫。旧答案没有帮助我,所以请不要标记为重复。

文件夹结构就是这样

main/*.csv
main/name1/name1/*.csv
main/name1/name2/*.csv
main/name2/name1/*.csv
main/name3/*.csv
import pandas as pd
import os
import glob

folder_selected = 'C:/Users/jacob/Documents/csv_files'
    < li >不起作用
frame = pd.concat(map(pd.read_csv, glob.iglob(os.path.join(folder_selected, "/*.csv"))))
csv_paths = glob.glob('*.csv')
dfs = [pd.read_csv(folder_selected) for folder_selected in csv_paths]
df = pd.concat(dfs)
            all_files = []
            
            all_files = glob.glob (folder_selected + "/*.csv")
            
            file_path = []
            for file in all_files:
                df = pd.read_csv(file, index_col=None, header=0)
                file_path.append(df)
                    
        frame = pd.concat(file_path, axis=0, ignore_index=False)

共有3个答案

闾丘鸣
2023-03-14

蟒蛇的路径库是执行此类任务的工具

from pathlib import Path

FOLDER_SELECTED = 'C:/Users/jacob/Documents/csv_files'

path = Path(FOLDER_SELECTED) / Path("main")

# grab all csvs in main and subfolders
df = pd.concat(pd.read_csv(f.name) for f in path.rglob("*.csv"))

如果 CSV 需要预处理,您可以创建一个read_csv函数来处理问题,并将其放在pd.read_csv

阎裕
2023-03-14

检查Dask库如下,它读取许多文件到一个df

>>> import dask.dataframe as dd
>>> df = dd.read_csv('data*.csv')

阅读他们的文档https://examples.dask.org/dataframes/01-data-access.html#Read-CSV-files

宗乐池
2023-03-14

您需要以递归方式搜索子目录。

folder = 'C:/Users/jacob/Documents/csv_files'
path = folder+"/**/*.csv"
    < li >使用< code>glob.iglob
df = pd.concat(map(pd.read_csv, glob.iglob(path, recursive=True)))
csv_paths = glob.glob(path, recursive=True)
dfs = [pd.read_csv(csv_path) for csv_path in csv_paths]
df = pd.concat(dfs)
file_paths = []
for base, dirs, files in os.walk(folder):
    for file in fnmatch.filter(files, '*.csv'):
        file_paths.append(os.path.join(base, file))
df = pd.concat([pd.read_csv(file) for file in file_paths])
from pathlib import Path
files = Path(folder).rglob('*.csv')
df = pd.concat(map(pd.read_csv, files))
 类似资料:
  • 我想从一个目录中读取几个csv文件到pandas中,并将它们连接到一个大的数据帧中。不过我还没弄明白。以下是我目前掌握的情况: 我想我需要在for循环中得到一些帮助???

  • 我有一个csv文件列表,我使用 我目前正在尝试遍历csv列表,并使用方法将axis参数设置为1,以按列将所有数据帧添加到一起。 它是工作的希望,但我遇到的问题,因为所有的数据帧都有相同的冒号名称,当我连接他们我得到例如10列都与关键"日期" 不管怎样,我能给哥伦布起个独一无二的名字吗?比如伦敦约会,柏林约会?显然,这些名称基于数据帧的名称。

  • Python是如何将CSV文件读入pandas数据帧的(我可以使用它进行统计操作,可以有不同类型的列,等等)? 我的CSV文件有以下内容: 在R中,我们将使用以下方法读取此文件: 这将返回一个R数据。框架: 有没有类似python的方法来获得相同的功能?

  • 我想从一个目录中读取几个excel文件到pandas中,并将它们连接到一个大的数据帧中。不过我还没弄明白。我需要一些关于for循环和构建级联数据帧的帮助:

  • 我有多个csv文件(每个文件包含N行(例如,1000行)和43列)。 我想把文件夹中的几个csv文件读入pandas,并将它们合并到一个数据帧中。 不过我还没能弄明白。 问题是,数据帧的最终输出(即,)将所有列(即43列)合并到代码的一列(见附图)屏幕截图中 选定行和列的示例(文件一) 选择的行和列(文件二)Client_IDClient_NamePointer_of_Bins日期权重C00000