我需要从多个工作簿中提取一个Excel工作表,并将其保存到一个数据框,然后再保存该数据框。
我有一个在每个月底生成的电子表格(例如
2019年6月。xlsx,2019年5月。xlsx,2019年4月。xlsx)。
我需要从每个工作簿中获取一个工作表“ Sheet1”,并将它们转换为数据帧(df1)。
我想保存此数据框。
作为一个很好的选择,我还想以某种方式在最初的“数据抓取”之后追加下个月的数据。
我对此还比较陌生,所以我没有取得太大进步。
import os
import glob
import pandas as pd
import xlrd
import json
import io
import flatten_json
files = glob.glob('/Users/ngove/Documents/Python Scripts/2019/*.xlsx')
dfs={}
for f in files:
dfs[os.path.splitext(os.path.basename(f))[0]] = pd.read_excel(f)
答案 0 :(得分:0)
我解释了您要保存数据框的声明,就像您要将其保存为合并的Excel文件一样。这将合并指定文件夹中以xlsx结尾的所有文件。
import os
import pandas as pd
from pandas import ExcelWriter
os.chdir("H:/Python/Reports/") #edit this to be your path
path = os.getcwd()
files = os.listdir(path)
files_xlsx = [f for f in files if f[-4:] == 'xlsx']
df = pd.DataFrame()
for f in files_xlsx:
data = pd.read_excel(f, 'Sheet1')
df = df.append(data)
writer=ExcelWriter('Combined_Data.xlsx')
df.to_excel(writer,'Sheet1',index=False)
writer.save()
您可以通过将一行更改为以下内容来更新代码以捕获所有2019年文件:
files_xlsx = [f for f in files if f[-9:] == '2019.xlsx']
我引用了this question的大部分代码,并针对xlsx进行了更新,并添加了代码的文件保存部分
答案 1 :(得分:0)
您可以将所有文件放在目录(例如当前目录)中。然后,将所有所有excel文件添加到列表中(例如files_xls
)。遍历所有文件,并使用pandas.read_excel获取相应的数据帧(例如list_frames
)。
下面,您可以找到一个示例:
import os
import pandas as pd
path = os.getcwd() # get cur dir
files = os.listdir(path) # get all the files in your cur dir
# get only the xls or xlsm (this depends on you)
files_xls = [f for f in files if (f[-3:] == 'xls' or f[-4:] == 'xlsm')]
df = pd.DataFrame()
list_frames = []
for f in files_xls:
print("Processing file: %s" %f)
try:
# the following will give you the dataframe
# the fun params depends on your data format
data = pd.read_excel(f, 'Sheet1', header=0, index_col=None,
sep='delimiter', error_bad_lines=False,
skip_blank_lines=True, comment=',,')
except:
pass
list_frames.append(data)
# at the end you can concat your data if you want and remove any dublicate
df = pd.concat(list_frames, sort=False).fillna(0)
df = df.drop_duplicates()
# at the end you can save it
writer = pd.ExcelWriter("your_title" + ".xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name="Sheets1", index=False)
writer.save()
我希望这会有所帮助。