#python #pandas
#python #pandas
Вопрос:
Я понимаю, что это может быть глупый вопрос. У меня есть вызываемая функция read_files()
, которая считывает два фрейма данных pandas, но структура данных немного отличается в каждом фрейме данных. Отсюда разные header, index_col, sheet_name и т. Д. для каждого фрейма данных.
Есть ли какой-либо способ переписать эту функцию, чтобы она была короче или более питонической?
def read_files():
input_location = r'C:UsersnameDesktopfoobar\'
df1 = pd.read_excel(
input_location 'example1.xlsx',
sheet_name='foo',
header=8,
index_col=2,
)
df2 = pd.read_excel(
input_location 'example2.xlsx',
header=11,
index_col=1,
skipfooter=10
)
return df1, df2
Ответ №1:
Вы можете, например, сохранить свои параметры в dict, заданном именем файла
read_excel_params = {
'example1.xlsx':dict( header=11,
index_col=1,
skipfooter=10),
'example2.xlsx':dict(header=11,
index_col=1,
skipfooter=10)
}
а затем вызовите
df1 = pd.read_excel(input_location 'example1.xlsx', **read_excel_params['example1.xlsx'])
df2 = pd.read_excel(input_location 'example1.xlsx', **read_excel_params['example2.xlsx'])
Вы можете вставить первый аргумент как в словарь, так и в lo=input_location 'example1.xlsx
, но вам нужно быть осторожным, чтобы инициализировать input_location
в нужный момент, прежде чем словарь будет создан
Конфигурационный словарь может быть заполнен вне вашей read_files()
функции и передан в качестве аргумента этой функции. Вы даже можете перебирать разные записи в dict и вызывать read_excel в цикле, без явного вызова read_excel
вашей функции для каждого файла.