Когда sheet_name=None
, возвращаемое значение равно OrderedDict {SheetName: pd.DataFrame}
. Здесь я создал простой файл .xlsx из двух листов с одной строкой на каждом листе, с разными метками столбцов.
d = pd.read_excel('test.xlsx', sheet_name=None)
for sheet_name, df in d.items():
print(sheet_name)
print(f'{df}\n')
#Sheet1
# foo bar
#0 11 12
#
#Sheet2
# baz boo
#0 1 2
Так что, если вы хотите изменить их, вы можете l oop над словарем
# Add 20, but you could reindex for instance.
for sheet_name, df in d.items():
d[sheet_name] = df.add(20)
print(d)
#OrderedDict([('Sheet1',
# foo bar
# 0 31 32),
# ('Sheet2',
# baz boo
# 0 21 22)])
Если все листы содержат одинаковую информацию, то вы можете concat
в один DataFrame. Здесь, поскольку нет перекрывающихся столбцов, это не имеет особого смысла. Имена листов добавляются как ключи MultiIndex, поэтому вы всегда можете разделить их обратно.
df = pd.concat(d, sort=False)
print(df)
# foo bar baz boo
#Sheet1 0 31.0 32.0 NaN NaN
#Sheet2 0 NaN NaN 21.0 22.0