我有一个列表
paths = ['1.xlsx', '2.xlsx', '3.xlsx', '4.xlsx', '5.xlsx', '6.xlsx', '7.xlsx', '8.xlsx', '9.xlsx']
有文件名
和函数 sum_invoice(path) 它返回指定文件中的总和或总计
import glob
import pandas as pd
from pandas.io.excel import ExcelFile
def sum_invoice(path):
xl = ExcelFile(path)
for sheet in xl.sheet_names:
df = xl.parse(sheet)
xy=df['INVOICE']
nn=pd.to_numeric(xy, 'coerce')
nn = nn.reset_index(drop=True)
nn.fillna(0)
total=nn.loc[nn.last_valid_index()]
return total
#create list of files named paths
paths =[]
for path in glob.iglob('*.xlsx'):
paths.append(path)
print(path)
sum_all = sum(sum_invoice(path) for paths in paths)
print sum_all
如何使用函数遍历这些文件,并对所有文件返回的总数求和。
请您参考如下方法:
已经有一个sum()标准库中的函数。您应该将函数重命名为 sum_path() 或类似名称。
然后你可以通过使用 generator expression 来实现你想要的。用 sum() 作为:
sum(sum_path(p) for p in paths)
