#python #excel #pandas
#питон #превосходить #панды
Вопрос:
Я пытаюсь сжать свой формат файла. Я изменил заголовки, чтобы они соответствовали моей функции. Это работало ранее, но с этим новым файлом я получаю ошибку позиционного аргумента.
input_fname = 'basic.xlsx' # input filename output_fname = 'basic-condensed.xlsx' # output filename basic_all = pd.read_excel(input_fname) catalog_id_column = 'Product Number' price_columns = 'List Price' size_column = 'Size' basic_all_condensed = condense_excel_multiprice(basic_all, price_columns, size_column) writer = pd.ExcelWriter(output_fname, engine='xlsxwriter', options={'strings_to_urls': False}) gbio_abs_condensed.to_excel(writer, index=False, encoding='utf-8') writer.close()
TypeError Traceback (most recent call last) lt;ipython-input-146-614ba8c55380gt; in lt;modulegt; 22 23 ---gt; 24 basicbio_all_condensed = condense_excel_multiprice(basicbio_all, price_columns, size_column) 25 26 writer = pd.ExcelWriter(output_fname, TypeError: condense_excel_multiprice() missing 1 required positional argument: 'size_column
Комментарии:
1. Какая строка генерирует ошибку?
2. извините, забыл указать ошибку
3. Извините, еще вопросы — Где определяется condense_excel_multiprice?
4. Это означает, что есть один аргумент, который вы не указали. Это не означает, что необходимо указать только один общий аргумент
5. Мы должны были бы ознакомиться с определением
condense_excel_multiprice
, чтобы посоветовать вам, но вы, скорее всего, обнаружите, что для этого требуется 4 параметра, а вы предоставляете 3.
Ответ №1:
То, что у вас есть вызванная переменная size_column
, не означает, что она была передана в том же/правильном положении, которое ожидала подпись вашей функции.
Возьмем этот пример:
def foo(x, y, ax=None): return x y y = 1 foo(y)
Это приводит к ошибке:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) lt;ipython-input-3-cf0d9fb1194fgt; in lt;modulegt; 3 4 y = 1 ----gt; 5 foo(y) TypeError: foo() missing 1 required positional argument: 'y'
Это потому, что я передаю y
как первый инструмент, к которому относится моя функция x
. Несмотря на то , что я сдал y
экзамен, мне все еще не хватает одного аргумента
Комментарии:
1. О да, вы абсолютно правы, кто-то добавил дополнительный аргумент, которого я не заметил. Спасибо!
Ответ №2:
Вывод ошибки указывает на то, что для функции требуется 1 отсутствующий аргумент condense_excel_multiprice
.
Вызов функции содержит локальные переменные basic_all, price_columns, size_column
, но запрашивает size_column
их, что наводит меня на мысль, что перед size_column
предоставленным аргументом отсутствует требуемое значение. Проверьте это определение функции на наличие аргументов, необходимых для выполнения вызова функции.