![](/img/trans.png)
[英]Create new sheet with sums of specific column for each file in directory of multiple xlsx files
[英]Create a new sheet in .xlsx file
我正在编写一个代码来自动从 a.csv 中提取我的数据,并以我需要的格式将其加载到 a.xlsx 中。 我想为我使用的每个文件创建一个新工作表并重命名它。 我的代码适用于一个文件,但是当我在我的文件夹中使用它时,它不会创建任何新工作表。
我已经尝试过这个解决方案,但我没有成功使用它。
这是我的代码:
import pandas as pd
import numpy as np
import datetime as dt
from pathlib import Path
pathList=sorted(Path('.').glob('*.csv'))
name=''
output="output/writer.xlsx"
def reader(file) :
return pd.read_csv(file,sep=";")
def extract(file,name):
file['dte']=pd.to_datetime(file['dte'],errors='coerce')
file['year']=pd.DatetimeIndex(file['dte']).year
df=file.set_index([file.groupby('year').cumcount(),'year']).unstack(1)
df=df.sort_index(1,level=1)
df.columns=[f"{x}_{y}" for x,y in df.columns]
writer = pd.ExcelWriter(output, engine='xlsxwriter')
df.to_excel(writer,sheet_name=f"{name}")
writer.save()
return
for path in pathList :
name=''
readFile=path
readName=str(readFile)
print(readFile)
for i in readName :
if i=='.':
break
name=name+i
print(name)
pathFile=reader(readFile)
extract(pathFile,f"{name}")
我已经尝试将我的文件名存储在一个列表中,并在循环中创建我的新工作表,但它不允许列表命名它。
如果你想复制它,这里是我文件夹中的两个文件: https://www.mediafire.com/file/mj9u4awael87bhc/ardentes.csv/file https://www.mediafire.com/file/xfliokbasset.3 csv/文件
只需在循环外使用global writer
和write.save()
def extract(file,name):
global df
file['dte']=pd.to_datetime(file['dte'],errors='coerce')
file['year']=pd.DatetimeIndex(file['dte']).year
df=file.set_index([file.groupby('year').cumcount(),'year']).unstack(1)
df=df.sort_index(1,level=1)
df.columns=[f"{x}_{y}" for x,y in df.columns]
writer = pd.ExcelWriter(output, engine='xlsxwriter')
for name in names:
df.to_excel(writer,sheet_name=name)
for path in pathList :
name=''
readFile=path
readName=str(readFile)
print(readFile)
for i in readName :
if i=='.':
break
name=name+i
print(name)
pathFile=reader(readFile)
extract(pathFile,name)
writer = pd.ExcelWriter(output, engine='xlsxwriter')
for name in names:
df.to_excel(writer,sheet_name=name)
writer.save()```
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.