Чтение нескольких таблиц - пути к файлам из центральной таблицы - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь загрузить несколько (сотни) электронных таблиц в один фрейм данных.Проблема в том, что эти таблицы расположены в разных папках / путях.Я надеюсь перебрать центральную электронную таблицу, в которой перечислены все конкретные пути (каждая электронная таблица содержит вкладку «Тест», которую я надеюсь использовать, эта вкладка имеет одинаковую структуру / структуру для всех электронных таблиц), но у меня возникают некоторые проблемы.

Ниже я перечислил все, что могло бы быть полезным, любая оценка будет принята с благодарностью!

Существующие проблемы с кодом :

  • Iполучить TypeError: невозможно объединить объект класса типа numpy.ndarray, специфичный для строки, в которой я использую concat (df.values) ниже
  • Я хотел бы добавить столбец, в котором перечисляется значение «Идентификатор» для каждогоэлектронная таблица в агрегированном фрейме данных (чтобы впоследствии я мог группировать данные по конкретной компании)

Текущий код :

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 голосов
/ 21 июня 2019

Делаем это поэтапно:

Цель: загрузить электронные таблицы в список 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)

Пока столбцы одинаковы.Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...