需求: /tmp/demo/data下有10個csv文件,按col0和col1分組分別統計col2和col3總和並計算col2和col3的商
# encoding:utf-8 import pandas import os data_root = '/tmp/demo/data/' all_csv = '/tmp/demo/all.csv' result_csv = '/tmp/demo/result.csv'
#-----------------------------------------------
# 將所有的文件合並到一個總和文件all_csv中
# 如果已經存在總和文件則刪除總和文件防止歷史干擾
if os.path.exists(all_csv):
os.remove(all_csv)
# 獲取所有的csv文件 data_list = [data_root+_ for _ in os.listdir(data_root)] # 把第一個文件寫到匯總文件,並包含表頭 all_head = pandas.read_csv(data_list[0]) all_head.to_csv(all_csv,encoding="utf_8_sig",index=False) # 把剩余的文件合並到匯總文件,不包含表頭 for i in range(1, len(data_list)): all_i = pandas.read_csv(data_list[i]) all_i.to_csv(all_csv,encoding="utf_8_sig",index=False, header=False, mode='a+') # 讀取匯總文件 all_all = pandas.read_csv(all_csv, encoding="utf-8") # 按"col0","col1"列分組統計col2 col3的總和 res = all_all.groupby(["col0","col1"]).agg({"col2":sum, "col3":sum}).reset_index() # 添加一列col4(col2/col3) res.insert(3,"col4",res["col2"]/res["col3"]) print(res) # 把結果寫進結果文件 res.to_csv(result_csv, encoding="utf_8_sig",index=False)