如何用Pandas通过循环合并12个月数据集?代码运行异常求助
代码问题排查与修正
问题1:文件路径拼接错误
代码里路径拼接时,sales_Data和文件名之间缺少路径分隔符/,导致生成的路径无效(比如变成./Pandas-Data-Science-Tasks-master/SalesAnalysis/sales_DataJanuary.csv这类错误格式),会触发文件找不到的异常。
问题2:pd.concat参数使用错误
pd.concat()要求传入DataFrame的列表,你直接传了两个单独的DataFrame,会导致参数不匹配的错误。
修正后的代码
import os import pandas as pd # 定义目标路径 data_path = './Pandas-Data-Science-Tasks-master/SalesAnalysis/sales_Data/' # 只筛选csv文件,避免目录里的非数据文件干扰 files = [file for file in os.listdir(data_path) if file.endswith('.csv')] concat_data = pd.DataFrame() for file in files: # 使用os.path.join拼接路径,兼容不同系统 df = pd.read_csv(os.path.join(data_path, file)) # 传入DataFrame列表给concat concat_data = pd.concat([concat_data, df], ignore_index=True) # 查看合并后的数据 print(concat_data)
额外优化建议
- 用
os.path.join拼接路径,能自动适配Windows和Linux的路径分隔符,避免手动加斜杠的错误。 - 添加
ignore_index=True参数,合并后重置索引,避免原索引重复混乱。 - 先把所有DataFrame存入列表,最后一次性合并,比循环里每次合并效率更高(数据量大时更明显):
import os import pandas as pd data_path = './Pandas-Data-Science-Tasks-master/SalesAnalysis/sales_Data/' files = [file for file in os.listdir(data_path) if file.endswith('.csv')] df_list = [] for file in files: df = pd.read_csv(os.path.join(data_path, file)) df_list.append(df) concat_data = pd.concat(df_list, ignore_index=True) print(concat_data)
内容的提问来源于stack exchange,提问作者ADIBA
相关产品推荐
相关产品推荐

