用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