读取指定路径下全部csv文件为pandas dataframe时df未定义报错如何解决
错误原因
- 你未对遍历到的文件做csv格式过滤,如果
input_path对应路径及其子目录下不存在任何csv文件,内层循环中的df = pd.read_csv(data)代码完全不会执行,df变量从未被定义,后续执行print(df)就会触发该NameError。 - 即使路径下存在csv文件,你当前的写法每次循环都会用新读取的csv覆盖
df变量,最终只能保留最后一个csv的内容,不符合读取所有csv文件的需求。
修复方案
你可以按照需求选择以下两种修复逻辑:
情况1:需要把所有csv文件合并为一个DataFrame
这是最常用的场景,修复后代码如下:
import os import pandas as pd input_path = "../samples/input_data/" df_list = [] # 提前初始化存储所有csv的DataFrame列表 for root, dirs, files in os.walk(input_path): for file in files: # 仅读取csv后缀的文件 if file.endswith(".csv"): current_df = pd.read_csv(os.path.join(root, file)) df_list.append(current_df) if df_list: # 合并所有DataFrame,忽略原索引避免冲突 df = pd.concat(df_list, ignore_index=True) print(df) else: print("指定路径下未找到任何csv文件,请检查input_path是否配置正确")
情况2:需要单独保留每个csv对应的DataFrame
直接使用df_list中的元素即可,列表顺序和文件遍历顺序一致,比如要打印第一个读取的csv,就调用print(df_list[0])。
内容的提问来源于stack exchange,提问作者melololo
相关产品推荐
相关产品推荐

