簡體   English   中英

在Python中重新格式化Excel電子表格

[英]Reformatting Excel spreadsheet in Python

在此輸入圖像描述

大家好,我在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM