Перво-наперво, вот код:
import pandas as pd
headers = ["Category", "Brand", "Product_Name", "Shipping", "Price"]
xl = pd.ExcelFile("C:\\Users\\*myusername*\\Desktop\\products.xlsx")
df = xl.parse("products")
print(df)
df = df.sort_values(by=headers[4], axis='columns', na_position='last')
writer = pd.ExcelWriter('C:\\Users\\*myusername*\\Desktop\\output.xlsx')
df.to_excel(writer, sheet_name = "Sheet1", columns=headers, index=False)
writer.save()
print("Done")
Что я пытаюсь сделать с этим, так это отсортировать некоторые данные, которые я скопировал с Newegg в качестве своего рода практического проекта. Я собираюсь взять этот код здесь и расширить его, чтобы выполнять различные операции с данными, но я подумал, что начну с легкости и просто отсортирую все по столбцу «Цена».
Когда я запускаю приведенный выше код, он выдает следующую ошибку:
File "<input>", line 9, in <module>
File "C:\Users\mmiller3\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\frame.py", line 4421, in sort_values
stacklevel=stacklevel)
File "C:\Users\mmiller3\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py", line 1382, in _get_label_or_level_values
raise KeyError(key)
KeyError: 'Price'
Когда я печатаю (df), сразу после того, как я создаю его из проанализированного листа xl, он правильно отображает 5 заголовков и все данные, хранящиеся внутри. Заголовок «Цена» определенно существует.
print (df) вывод ниже:
Category Brand ... Shipping Costs Price
0 Desktop Memory G.SKILL ... Free Shipping 199.99
1 Desktop Memory G.SKILL ... Free Shipping 143.99
Это всего лишь небольшой фрагмент вывода, он занимает 147 строк.
Я пробовал ряд вещей, включая замену «headers [4]» на более прямую «Price», я пробовал указывать «E» для столбца, а не использовать заголовок.
На данный момент я в тупике, и единственной другой ссылкой, которую я нашел по этой конкретной проблеме, была простая синтаксическая ошибка, но я не делаю ту же ошибку.
Любая помощь, которую вы, ребята, можете мне предложить, будет оценена.






Вы должны уметь делать
df = xl.parse("products", names = headers)
После добавления я все еще получаю ту же ошибку. (Извините за задержку с ответом, я работаю над этим в свободное время, и в течение нескольких дней на работе все стало немного сумасшедшим.)