【问题标题】:How import multiple text files to one dataframe in python?如何在python中将多个文本文件导入一个数据框?
【发布时间】:2021-04-28 07:44:19
【问题描述】:

我发现here 如何将多个文本文件导入一个数据框。但是,它给出了一个错误。文件的名称为 footballseason1,footballseason2,footballseason3 ...(直到 footballseason5000)

import pandas as pd
import datetime as dt
import os, glob
os.chdir("~/Downloads/data")
filenames = [i for i in glob.glob("*.txt")]

FileNotFoundError: [Errno 2] No such file or directory: '~/Downloads/data'

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

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

您能帮忙解决问题吗?有什么方法可以在不更改目录的情况下完成所有步骤,只需使用所有文件所在的路径完成所有步骤?

【问题讨论】:

  • 当您读取一个文件时,您正在读取扩展名为 txt 的文件,而当您读取文件夹时,您正在读取扩展名为 csv 的文件,也许您没有任何文件
  • 我也改成txt.但是还是一样的错误
  • 您的实际文件类型是什么?文件存储在哪里?
  • 所有文件均为.txt格式,位于"~/Downloads/data/"

标签: python pandas


【解决方案1】:

Python的os默认不理解~,所以它@98​​7654321@:

filenames = [i for i in glob.glob(os.path.expanduser("~/Downloads/data/*.txt"))]

【讨论】:

    【解决方案2】:

    你可以像下面这样使用python的list comprehensionpd.concat

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

    【讨论】:

    • 我有一个错误:No objects to concatenate
    • 尝试添加recursive=True
    • 现在显示name 'true' is not defined。我还尝试以不同的方式使用下面的代码查看函数是否正常工作,但再次出现目录不存在的错误import glob, os os.chdir("~/Downloads/data") for file in glob.glob("*/.txt", recursive = true): print(file)
    • os.lisdir('~/Downloads/data') 给你什么
    【解决方案3】:

    通过路径库->

    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')
    

    【讨论】:

      【解决方案4】:

      从多个文件导入数据 现在让我们看看如何从特定目录的多个文件中导入数据。有很多方法可以做到这一点,但我个人认为这是一种更容易使用的方法,而且对于初学者来说也更容易理解。 1)首先,我们将导入操作系统和 glob 库。我们需要他们浏览不同的工作目录并获取他们的路径。 导入操作系统 导入全局 2)我们还需要导入 pandas 库,因为我们需要使用数据框。 将熊猫导入为 pd 3)让我们将工作目录更改为我们拥有所有数据文件的目录。 os.chdir(r"C:\Users\HARISH\Path_for_our_files") 4) 现在我们需要创建一个循环遍历当前工作目录中的所有 .csv 文件 文件名 = [i for i in glob.glob("*.csv")]

      【讨论】:

      • 这个答案与OP的问题完全无关。请仔细阅读问题,并注意 SO 上的答案应该真正回答所提出的问题。
      猜你喜欢
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      相关资源
      最近更新 更多