如何用Pandas动态合并多份月度网站数据CSV文件
动态合并月度CSV数据为宽格式DataFrame
以下是实现动态合并月度CSV文件并输出目标格式的完整步骤:
步骤1:导入依赖库
import pandas as pd import glob
步骤2:获取所有CSV文件
你用的glob写法完全没问题,直接用即可:
all_filenames = glob.glob("*.csv")
步骤3:读取并处理每个CSV文件
循环遍历所有文件,从文件名中提取月份名称(去掉.csv后缀),将每个文件的Value列重命名为对应月份,同时保留URL列作为关联键:
dfs = [] for filename in all_filenames: # 从"January.csv"这类文件名中提取"January"作为月份名 month_name = filename.replace(".csv", "") # 读取CSV文件 df = pd.read_csv(filename) # 重命名Value列,避免合并时列名冲突 df = df.rename(columns={"Value": month_name}) dfs.append(df)
步骤4:合并所有DataFrame
以URL为基准列,依次合并所有处理后的DataFrame:
# 以第一个DataFrame为合并起点 merged_df = dfs[0] # 循环合并剩余的DataFrame for df in dfs[1:]: # 如果所有文件的URL完全一致,用how="inner";若存在URL缺失情况,用how="outer"保留所有URL merged_df = pd.merge(merged_df, df, on="URL", how="outer")
步骤5:导出合并后的CSV
merged_df.to_csv("merged_monthly_data.csv", index=False)
完整代码整合
import pandas as pd import glob # 获取文件夹内所有CSV文件 all_filenames = glob.glob("*.csv") # 批量读取并处理每个文件 dfs = [] for filename in all_filenames: month_name = filename.replace(".csv", "") df = pd.read_csv(filename) df = df.rename(columns={"Value": month_name}) dfs.append(df) # 合并所有月度数据 merged_df = dfs[0] for df in dfs[1:]: merged_df = pd.merge(merged_df, df, on="URL", how="outer") # 导出最终结果 merged_df.to_csv("merged_monthly_data.csv", index=False)
后续新增的月度CSV文件(比如April.csv、May.csv)只要放在同一文件夹下,运行这段代码就能自动完成合并,完全适配动态新增的需求。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

