如何读取多个 csv 并将它们放入单独的 Pandas 数据框中?

问题描述 投票:0回答:2

我正在尝试循环遍历具有多个 CSV 的目录并将它们读入(单独的)pandas 数据帧。 我尝试了几种方法,但我无法做到这一点。不过,我确实设法读取了 csv 并将它们放入列表中,但是当尝试读取 csv 文件时,我的 python 找不到该文件。

我已经尝试过这段代码(我匿名了我的路径):

import pandas as pd 
        
import os

path = r'C:\path\UV' 



directory = os.fsencode(path)
lijst = []
for file in os.listdir(directory):
    filename = os.fsdecode(file)
    if filename.endswith(".csv"): 
        #print(os.path.join(filename))
        lijst.append(file)
        #df = pd.read_csv(file)
        continue
    else:
        continue
lijst

for i in lijst:
    df = pd.read_csv(filename)

#pd.read_csv("UltraViolet1")

这会出现错误,他无法读取文件(它们被命名为 UltraViolet1 等) 有谁知道这里出了什么问题吗?

python pandas dataframe csv
2个回答
0
投票

问题似乎是您在尝试读入数据帧时使用文件名而不是文件的完整路径。

read_csv
需要完整路径。这是一个修复:

import pandas as pd
import os

path = r'C:\path\UV'

dataframes = []

for filename in os.listdir(path):
    if filename.endswith(".csv"):
        file_path = os.path.join(path, filename)
        df = pd.read_csv(file_path)
        dataframes.append(df)

for df in dataframes:
       print(df.head()) 

0
投票

这里的问题(可能)是

os.listdir
只返回文件名。 它不返回实际路径。 因此,如果您从
path
以外的目录运行此文件,将找不到这些文件。

我建议:

import glob
import pandas as pd
names = glob.glob('C:/path/UV/*.csv')
for name in names:
    df = pd.read_csv(name)

但请注意,这会一遍又一遍地覆盖

df
变量。 您可能希望将数据帧保存在列表中。

© www.soinside.com 2019 - 2024. All rights reserved.