用Python重新格式化Excel电子表格
大家好,我收到了一个excel(xls)电子表格中的数据,格式在第一个表中,如上所示。
我正试图将这些数据重新排列成表格格式,在下面的表格中。 任何帮助将不胜感激。
非常感谢。
首先,将其保存到.csv
文件
import csv curr = [] with open('file.csv') as infile, open('path/to/output', 'w') as fout: outfile = csv.writer(fout) for area, pop10, pop20, pop50 in csv.reader(infile): if curr and curr[0] != area: outfile.writerow(curr) curr = [area, pop10, pop20, pop50] continue if pop10: curr[1] = pop10 if pop20: curr[2] = pop20 if pop50: curr[3] = pop50
你可以用pandas来简单地做到这一点:
import pandas as pd dataframe = pd.read_excel("in.xlsx") merged = dataframe.groupby("AREA").sum() merged.to_excel("out.xlsx")
所以,如果csv有11列'AREA'是第二列,代码是:
def CompressRow(in_csv,out_file): curr = [] with open(in_csv) as infile, open(out_file, 'w') as fout: outfile = csv.writer(fout) for a,b,c,d,e,f,g,h,i,j,k in csv.reader(infile): if curr and curr[1] != b: outfile.writerow(curr) curr = [a,b,c,d,e,f,g,h,i,j,k] continue if a: curr[0] = a if c: curr[2] = c if d: curr[3] = d if e: curr[4] = e if f: curr[5] =f if g: curr[6]=g if h: curr[7]=h if i: curr[8]=i if j: curr[9]=j if k: curr[10]=k #execute CompressRow(in_csv,out_file) I tried executing it and it gives me if a: curr[0]=a IndexError: list assignment index out of range