Python цикл по листам Excel, добавить имя листа в список, а затем объединить все - PullRequest
0 голосов
/ 13 июня 2018

Я перебираю листы Excel и добавляю их в список.Когда цикл заканчивается, я использую Pandas для объединения в один фрейм данных.Проблема в том, что я добавляю имя листа в соответствующий список.

# infile is a filepath variable    
xls = xlrd.open_workbook(infile, on_demand=True)



dfList = []
for sheet_name in xls.sheet_names():
    df = pd.read_excel(infile, sheet_name, header = 0)
    #df['Well_name'] = sheet_name
    dfList.append(df)
    print(sheet_name + " appended.")
    #time.sleep(2)
print("Loop complete")
# Concatenating the appended lists
dfs = pd.concat(dfList, axis=0)

Я пытался создать новый столбец в df, но это привело к несоответствию длины, но оно также не работало, потому что оно постоянноперезаписывается на последнее имя листа в цикле.

Есть мысли или предложения?

1 Ответ

0 голосов
/ 13 июня 2018

Похоже, вы сталкиваетесь с некоторыми проблемами.Один из способов избежать этой проблемы - использовать понимание списка.Вы также можете использовать pd.DataFrame.assign, чтобы добавить серию в ваше понимание списка:

dfList = [pd.read_excel(infile, sheet_name, header=0).assign(Well_name=sheet_name) \
          for sheet_name in xls.sheet_names()]

dfs = pd.concat(dfList, axis=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...