读取多个电子表格-中央电子表格中的文件路径

时间:2019-06-21 20:11:25

标签: python excel pandas

我正在尝试将多个(数百个)电子表格加载到一个数据框中。问题在于这些电子表格位于不同的文件夹/路径中。我希望遍历列出所有特定路径的中央电子表格(每个电子表格都包含一个我希望提取的名为“ Test”的选项卡,该选项卡在所有电子表格中的结构/布局均相同),但是存在一些问题

我在下面列出了可能有帮助的所有内容,任何见解将不胜感激!

现有代码问题

  • 我收到TypeError:无法连接特定于我在下面使用concat(df.values)的行的类numpy.ndarray类型的对象
  • 我想添加一列,以列出汇总数据框中每个电子表格的“标识符”值(以便以后可以按特定公司分组)

当前代码

df_0 = pd.read_excel(r'PATH TO CENTRAL SPREADSHEET')
list_of_paths = df_0['Path'].tolist()

all_data = pd.DataFrame()
for itr in range(len(list_of_paths)):
    df = pd.read_excel(list_of_paths[itr], sheet_name="Test", ignore_index=True)
    cdf = pd.concat(df.values)
    all_data = all_data.append(cdf,ignore_index=True)

中央电子表格

Identifier    Path
AAPL          PATH TO UNDERLYING AAPL FILE
GOOG          PATH TO UNDERLYING GOOG FILE

基础文件示例(“测试”标签)结构

Metric   2018    2017
Revenue  2mm     3mm
Expense  1mm     2mm

所需的输出

Metric    Ticker    2018    2017
Revenue   AAPL      2mm     3mm
Revenue   GOOG      5mm     8mm
Expense   AAPL      1mm     2mm
Expense   GOOG      4mm     6mm

1 个答案:

答案 0 :(得分:0)

分步进行:

目标:将电子表格加载到df的列表中

df_0 = pd.read_excel(r'PATH TO CENTRAL SPREADSHEET')
dict_of_paths = {}
for i,j in df_0.iterrows():
     dict_of_paths[j['Identifier']] = j['Path'] 

df_list = []
for key in dict_of_paths.keys():
    df = pd.read_excel(dict_of_paths[key], sheet_name="Test")
    df['ticker'] = key
    df_list.append(df)

现在所有df都在df_list中

mdf = pd.concat(df_list,ignore_index=True)

只要列相同即可。这应该起作用。