对 python 中 excel 的列求和

sum columns from excel in python

我的代码中有一个 excel 和一个 'if'。

if telos_min == False:

    data = pd.DataFrame(data =all_together)
    data=data.transpose()
    writer= pd.ExcelWriter('ΕΟΠΥΥ.xlsx',engine='openpyxl', index=False)
    writer.book = load_workbook('ΕΟΠΥΥ.xlsx')
    writer.sheets=dict((ws.title,ws) for ws in writer.book.worksheets)
    reader = pd.read_excel(r'ΕΟΠΥΥ.xlsx',sheet_name=minas)
    data.to_excel(writer,sheet_name=minas,header=False, index = None,startrow=len(reader)+1)

    writer.save()

else:       
    writer=pd.ExcelWriter('pythonexcel.xlsx',engine='openpyxl',index=False)
    writer.book=load_workbook('pythonexcel.xlsx')
    writer.sheets=dict((ws.title,ws) for ws in writer.book.worksheets)
    reader=pd.read_excel(r'pythonexcel.xlsx',sheet_name=month,skipcols=[1,12],
                         skiprows=[1])

    sum_month=['SUM']
    for col in reader:
        for row in reader:
            asum=sum(float(col))
            sum_month.append(asum)

    data=pd.DataFrame(data=sum_month)
    data.to_excel(writer,sheet_name=month,header=False, index = None,startrow=len(reader)+1)

    writer.save()

但我有以下问题,我无法求和,excel 的第一行是文本以及第一列,最后一列是百分比,所以我不想总结一下 EDIT 这就是我在 reader 中使用 skiprows 和 skipcols 的原因,但它似乎不起作用。 /编辑

使用上面的代码出现以下错误:

ValueError: could not convert string to float: 'some item'

*编辑* 示例数据:

kind (skip row and col | num1 | num2 | num3 | num4 | num5 | num 6 | %(skip) |
some item              | 123  | 213  | 555  |  44  | 5555 | 4444  | 32%     |
some item  1           | 123  | 213  | 555  |  44  | 5555 | 4444  | 32%     |     
some item  2           | 123  | 213  | 555  |  44  | 5555 | 4444  | 32%     |
some item  3           | 123  | 213  | 555  |  44  | 5555 | 4444  | 32%     |
some item  4           | 123  | 213  | 555  |  44  | 5555 | 4444  | 32%     |
some item  5           | 123  | 213  | 555  |  44  | 5555 | 4444  | 32%     |
The Sum is (end result)| sum1 | sum2 | sum3 | sum4 | sum5 | sum6  | empty   |
import numpy as np
import pandas as pd

df = pd.read_excel(file_path, header=0)

df

            kind     num1    num2    num3    num4    num5    num 6    Percent
0   some item        123     213     555      44    5555     4444     0.32
1   some item  1     123     213     555      44    5555     4444     0.32
2   some item  2     123     213     555      44    5555     4444     0.32
3   some item  3     123     213     555      44    5555     4444     0.32
4   some item  4     123     213     555      44    5555     4444     0.32
5   some item  5     123     213     555      44    5555     4444     0.32

对列求和,(python 将在应用求和时连接 'kind' 列中的字符串)。然后将求和结果转换为列表,编辑列表,使第一个值为 'The sum is',然后将其附加到原始数据帧。

last_row = ['The sum is'] + list(df.sum())[1:]
df2 = pd.DataFrame(data=[last_row], columns=df.columns)
df = df.append(df2, ignore_index=True)

df

            kind     num1    num2    num3    num4    num5    num 6    Percent
0   some item        123     213     555      44    5555     4444     0.32
1   some item  1     123     213     555      44    5555     4444     0.32
2   some item  2     123     213     555      44    5555     4444     0.32
3   some item  3     123     213     555      44    5555     4444     0.32
4   some item  4     123     213     555      44    5555     4444     0.32
5   some item  5     123     213     555      44    5555     4444     0.32
6   The sum is       738    1278    3330     264   33330    26664     1.92

保存到文件

df.to_excel(file_path, index=False)