pandas读取文件夹及excel文件

读取目录及所有excel文件,包括目录名文件名,文件名尾数分奇偶两种类型

参考GPT和自己的思路:

可以使用pandas的相关函数来读取文件夹及所有excel文件。下面是一段示例代码:

import os
import pandas as pd

# 要读取的目录路径
dir_path = './data/'

# 定义一个空的DataFrame来存储所有数据
df_all = pd.DataFrame()

# 遍历目录下的所有文件
for root, dirs, files in os.walk(dir_path):
    for file in files:
        # 判断是否为Excel文件
        if file.endswith('.xlsx'):
            # 构造文件路径
            file_path = os.path.join(root, file)
            # 读取Excel文件中的数据
            df = pd.read_excel(file_path)
            # 给数据添加三列信息:所在目录名、文件名、文件名尾数的奇偶性
            df['directory'] = os.path.basename(root)
            df['file_name'] = file
            df['end_num'] = int(file.split('.')[0][-1])
            df['is_odd'] = df['end_num'] % 2
            # 将当前Excel文件中的数据添加到总数据中
            df_all = df_all.append(df)

# 打印出总数据
print(df_all.head())

这段代码首先定义了要读取的目录路径,然后使用os模块遍历该目录下的所有文件。当遇到Excel文件时,使用pandas的read_excel函数将其读入DataFrame中。接着,代码给DataFrame添加了三列信息,分别是文件所在目录名、文件名、以及文件名尾数的奇偶性。最后,将当前Excel文件中的数据添加到总数据DataFrame中。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
你可以使用pandas库中的函数来实现读取目录及所有excel文件的功能。以下是一个示例代码,其中使用了os库中的函数来获取指定目录下的所有文件名,并在pandas中使用了read_excel函数来读取所有的excel文件:

import os
import pandas as pd

def read_excel_files(path):
    all_files = os.listdir(path)
    df_list = []
    for file_name in all_files:
        full_path = os.path.join(path, file_name)
        if os.path.isdir(full_path):
            continue
        if not file_name.endswith('.xlsx'):
            continue
        if int(file_name.split('.')[-2]) % 2 == 0:
            sheet_name = 'even'
        else:
            sheet_name = 'odd'
        df = pd.read_excel(full_path, sheet_name=sheet_name)
        df['filename'] = file_name
        df['dirname'] = os.path.dirname(full_path)
        df_list.append(df)
    return pd.concat(df_list, ignore_index=True)

df = read_excel_files('/path/to/folder')

在上面的代码中,path为目录的路径,os.listdir()函数用于获取目录下的所有文件名,os.path.join()函数用于拼接目录路径和文件名,os.path.isdir()函数用于判断文件是否是目录,str.endswith()函数用于判断文件名是否以.xlsx结尾,int()函数用于将字符串类型的文件名尾数转换为整数类型进行判断,pd.read_excel()函数用于读取excel文件,pd.concat()函数用于将所有的DataFrame合并为一个DataFrame。

这里为了方便,将不是excel文件和偶数尾数的excel文件过滤掉了。如果需要读取其他类型的文件,可以在if not file_name.endswith('.xlsx'):这行代码中修改文件类型即可。如果需要使用其他的sheet名,可以修改sheet_name变量的值。如果需要在DataFrame中加入目录名和文件名,可以使用os.path.dirname()函数和df['filename'] = file_name语句实现。

  • 建议你看下这篇博客👉 :pandas读取 Excel 文件超长报错
  • 除此之外, 这篇博客: pandas的Excel文件读写(一)——组件要求与文件读取中的 三、读取一个目录下的全部文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • (1)用os.listdir()读取指定目录file_dir下的文件列表。

    (2)对文件列表下的每个文件single_file,依次用os.path.join(file_dir,single_file)获取文件名,作为pd.read_excel()的参数,依次进行处理。

    目录下的文件应该全部为Excel文件(xls或xlsx格式),否则会报错。

    例如,在当前目录内有一个目录temp,里面有若干个xls文件,现需要依次读取里面的所有文件,并分别原样写入文件'1.xls'、'2.xls'、……。代码如下:

    # -*- coding: utf-8 -*-
    import os
    import pandas as pd
    
    file_dir="temp"    #目录
    all_file_list=os.listdir(file_dir)
    i = 1
    for single_file in all_file_list:
        single_data_frame=pd.read_excel(os.path.join(file_dir,single_file)) # 逐个读取
        single_data_frame.to_excel(str(i)+'.xls',index=False)   #写入
        i+=1
  • 您还可以看一下 乌云毕力格老师的python之pandas玩转excel表格教程课程中的 02.【读取文件】小节, 巩固相关知识点