如何在python中将多个文本文件导入到一个数据帧中?

如何在python中将多个文本文件导入到一个数据帧中?,python,pandas,Python,Pandas,我发现了如何将多个文本文件导入一个数据帧。然而,它给出了一个错误。文件名为footballseason1、footballseason2、footballseason3。。。(直到足球赛第5000季) FileNotFoundError:[Errno 2]没有这样的文件或目录:“~/Downloads/data” 但是,如果我尝试导入一个文件,则一切正常,并且找到了目录 df = pd.read_csv("~/Downloads/data/footballseason1.txt&quo

我发现了如何将多个文本文件导入一个数据帧。然而,它给出了一个错误。文件名为footballseason1、footballseason2、footballseason3。。。(直到足球赛第5000季)

FileNotFoundError:[Errno 2]没有这样的文件或目录:“~/Downloads/data”

但是,如果我尝试导入一个文件,则一切正常,并且找到了目录

df = pd.read_csv("~/Downloads/data/footballseason1.txt", sep=",")

你能帮我解决这个问题吗?有没有办法不用更改目录,只需使用所有文件所在的路径执行所有步骤?

您可以使用python的
列表理解
pd.concat
,如下所示

df = pd.concat([pd.read_csv(i, sep=',') for i in glob.glob("~/Downloads/data/*.txt", recursive=True)])

从多个文件导入数据 现在,让我们看看如何从一个特定目录的多个文件中导入数据。有很多方法可以做到这一点,但我个人认为这是一种更简单、更容易使用的方法,而且对于初学者来说更容易理解。 1) 首先,我们将导入OS和glob库。我们需要它们在不同的工作目录中导航并获得它们的路径。 导入操作系统 导入glob 2) 我们还需要导入pandas库,因为我们需要处理数据帧。 作为pd进口熊猫 3) 让我们将工作目录更改为包含所有数据文件的目录。 chdir(r“C:\Users\HARISH\Path\u用于我们的文件”) 4) 现在我们需要创建一个for循环,循环遍历当前工作目录中的所有.csv文件 filenames=[glob.glob中的i代表i(“*.csv”)]

通过pathlib->

import pandas as pd
from pathlib import Path
inp_path = Path("~/Downloads/data")
df = pd.concat([
    pd.read_csv(txt_file, sep=',') for txt_file in inp_path.glob('*.txt')
])
添加检查->

import pandas as pd
from pathlib import Path
inp_path = Path("~/Downloads/data")
if inp_path.exists():
    df = pd.concat([
        pd.read_csv(txt_file, sep=',') for txt_file in inp_path.glob('*.txt')
    ])
else:
    print('input dir doesn\'t exist please check path')

Python的
os
默认情况下不理解
~
,因此它:

filename=[glob.glob(os.path.expanduser(“~/Downloads/data/*.txt”)中的i代表i]

当您读取一个文件时,您正在读取扩展名为txt的文件;当您读取文件夹时,您正在读取扩展名为csv的文件,可能您没有任何文件。我也将其更改为txt。但是相同的错误您的实际文件类型是什么?文件存储在哪里?所有文件都是
.txt
格式,并且位于
“~/Downloads/data/”
我有一个错误:
没有要连接的对象
尝试添加recursive=true现在它说
名称“true”没有定义
。我还尝试以不同的方式查看函数是否正在使用下面的代码工作,但再次出现错误,即glob.glob(“*/.txt”,recursive=true)中的文件的目录不存在
import glob,os os.chdir(“~/Downloads/data”):print(file)
os.lisdir(“~/Downloads/data”)有什么作用给你这个答案与OP的问题完全无关。请仔细阅读问题,并注意SO上的答案应该真正回答问题。
import pandas as pd
from pathlib import Path
inp_path = Path("~/Downloads/data")
if inp_path.exists():
    df = pd.concat([
        pd.read_csv(txt_file, sep=',') for txt_file in inp_path.glob('*.txt')
    ])
else:
    print('input dir doesn\'t exist please check path')