Python:将多个Excel工作簿读入一个DataFrame

时间:2018-04-16 16:53:20

标签: python pandas dataframe

我在一个文件夹中有大约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)

1 个答案:

答案 0 :(得分:1)

您不应该继续追加现有的pd.DataFrame,因为这样效率会非常低。

您应该将pandas.concat与数据框列表一起使用。

列表理解可以促进这一点:

df = pd.concat([pd.read_excel(f, skiprows=range(10)) for f in files], axis=0)

列将自动对齐,假设第11行中的每个Excel工作表中都存在标题。