#python #sql #pandas #database #dataframe
#python #sql #pandas #База данных #фрейм данных
Вопрос:
Вот что я делаю, я беру таблицу SQL и читаю ее с помощью pandas:
import pandas as pd
df = pd.read_sql(query, conn)
Будучи «запросом», таблицы, которые я хочу взять из базы данных, и «conn» соединение с базой данных. Запрос, который я делаю, на всякий случай, если вам нужно знать, в основном представляет собой SELECT, в котором я объединяю несколько таблиц и группирую их по количеству и сумме. Что-то вроде этого:
SELECT p.quantity, sum(s.count)
FROM data_base.stock s
JOIN blah blah
JOIN blah blah
JOIN blah blah
WHERE blah blah
GROUP BY p.quantity
Это дает мне такую таблицу:
Общее количество доступных сортов пива:
**quantity** **sum**
220 3223
620 5654
315 3455
Я хочу, чтобы в таблице не было имен по умолчанию, я хочу их установить, я обнаружил, что следующая строка кода может работать:
df = df.rename(
columns={'quantity': 'Presentation (mL)', 'sum':'Available (Unities)'},
index={'220': '220mL Bottle', '315':'315mL Bottle', '620':'620mL Bottle'}
)
И вот в чем проблема, результирующая таблица отображается следующим образом, индекс не меняется:
**Presentation(mL)** **Availale (Unities)**
220 3223
620 5654
315 3455
Что я делаю не так?
Комментарии:
1. Вы уверены, что ваш столбец количества является индексом, а не столбцом?
2. Если «Презентация (mL)» является индексом, и вы хотите переименовать индекс фрейма данных, df.index.name = ‘Презентация (mL)’. Если вы хотите переименовать столбцы, df.rename(столбцы ={«количество»: «количество (мл)», «сумма»: «Доступно (единицы)»})
3. @EmiOB я совершенно уверен, что это так, это документация или примеры, на которых я основываюсь: Переименование фрейма данных Pandas
4. @Alex Я меняю столбцы, и это работает, как вы говорите. Но индексы, которые я хочу изменить, — это «220», «315» и «620», и, как я делаю, это не работает.
5. willyro93, «количество» — это столбец? если это так, пожалуйста, попробуйте с помощью df.set_index(‘Презентация (mL)’)
Ответ №1:
Я смог решить эту проблему, поскольку я хотел изменить значения «220», «315» и «620», все, что мне нужно было сделать, это:
df["Presentation(mL)"].replace(
{220:"220mL Bottle",
315:"315mL Bottle",
620:"620mL Bottle"},
inplace=True
)