我在一个文件夹中有大约150种不同的工作簿(xlsx),我想将其读入python数据框进行分析。
每个工作簿的设置与相同的工作表名称和列名相同。
我需要将每个工作簿的第一张表("关键字排名")上传到每个DataFrame。对于读入的第一个工作表,我想从第11行开始维护列标题;之后的每个工作表我都希望从第12行开始追加到我的DataFrame。
我是Python的新手并且已经在线阅读了一些说明,但我被困了。根据我的理解,我可以使用xlrd库来实现这一点。
我一直在玩下面的代码,但还没远。 '关键词排名'是我想要附加的工作表名称。
import pandas as pd
import numpy as np
import glob as glob
all_data = pd.DataFrame()
all_data = pd.ExcelFile("C:\\Users\\John Smith\\Documents\\Analysis\\FPR Nov - Mar 2018\\Dec_1_General.xlsx")
print(all_data.sheet_names)
all_d = all_data.parse('Keywords Rankings')
for f in glob.glob("Users\\John Smith\\Documents\\Analysis\\FPR Nov - Mar 2018\\*.xlsx", recursive=True):
df = pd.read_excel(f)
all_d = all_d.append(df,ignore_index=True)
答案 0 :(得分:1)
您不应该继续追加现有的pd.DataFrame
,因为这样效率会非常低。
您应该将pandas.concat
与数据框列表一起使用。
列表理解可以促进这一点:
df = pd.concat([pd.read_excel(f, skiprows=range(10)) for f in files], axis=0)
列将自动对齐,假设第11行中的每个Excel工作表中都存在标题。