如何读取多个CSV文件并存入独立Pandas DataFrame?文件读取报错排查
问题分析与修正
你的代码存在三个核心问题,导致无法正确读取CSV文件:
- 存储了错误的对象:
lijst.append(file)存储的是编码后的字节对象,不是可直接使用的字符串文件名,后续读取时无法识别。 - 缺少完整文件路径:仅存储文件名,Python会默认在当前工作目录查找文件,而非你指定的
C:\path\UV目录。 - 循环变量复用错误:第二个循环中始终使用最后一次循环的
filename变量,没有遍历列表中的每个文件。
修正后的代码
方式1:将所有DataFrame存入列表
import pandas as pd import os path = r'C:\path\UV' dfs = [] # 存储所有CSV对应的DataFrame for filename in os.listdir(path): if filename.endswith(".csv"): # 拼接完整文件路径,确保Python能找到目标文件 full_file_path = os.path.join(path, filename) # 读取CSV并添加到列表 df = pd.read_csv(full_file_path) dfs.append(df) # 此时dfs中的每个元素对应一个CSV文件的DataFrame
方式2:用字典存储(可通过文件名快速定位DataFrame)
如果需要区分不同文件对应的DataFrame,用字典存储更方便:
import pandas as pd import os path = r'C:\path\UV' df_map = {} # 键是文件名,值是对应的DataFrame for filename in os.listdir(path): if filename.endswith(".csv"): full_file_path = os.path.join(path, filename) df_map[filename] = pd.read_csv(full_file_path) # 例如读取UltraViolet1.csv对应的DataFrame:df_map["UltraViolet1.csv"]
关键修正点说明
- 直接遍历
os.listdir(path)获取字符串文件名,无需额外编码解码,简化逻辑。 - 必须用
os.path.join()拼接目录路径和文件名,生成完整的文件路径,避免Python找错位置。 - 遍历过程中直接完成文件读取和存储,避免后续循环的变量错误。
内容的提问来源于stack exchange,提问作者tomas Meeuwse
相关产品推荐
相关产品推荐

