Convert Pandas.The series obtained as a result of grouping, in Pandas. DataFrame
I have a question when working with a table in Pandas. I get everything below
#достали из базы данных табличку
path = os.path.dirname(os.path.abspath(__file__))
db = os.path.join(path, 'diacompanion.db')
con = sqlite3.connect(db)
cur = con.cursor()
cur.execute('''SELECT week_day,date,time,type,food,libra FROM favourites
WHERE user_id = ?''', (session['user_id'],))
L = cur.fetchall()
con.close()
# сделали из нее DataFrame
s = pd.DataFrame(L, columns=['День недели', 'Дата', 'Время','Тип',
'Избранное', 'Вес'])
s = s.groupby(['День недели','Дата','Тип','Время'])['Избранное'].apply(lambda tags: ', '.join(tags))
# записали в excel файл
writer = pd.ExcelWriter('app\\%s.xlsx' % session["username"], engine='xlsxwriter')
s.to_excel(writer, 'Sheet1')
writer.save()
The resulting Series:
День недели Дата Тип Время **здесь почему-то ПРОПАЛА надпись Избранное**
Воскресенье 12-04-2020 Перекус 17:57 Соус белый с рассолом
Вторник 07-04-2020 Перекус 17:57 Капуста, тушенная с яблоками, Рис отварной
Понедельник 06-04-2020 Завтрак 17:46 Бобовые (горох) в соусе
Обед 17:46 Макароны отварные с овощами
Перекус 17:41 Лапшевик с творогом
17:46 Карп жареный
Пятница 10-04-2020 Перекус 17:57 Тесто для оладий
Среда 08-04-2020 Перекус 17:57 Картофель в молоке
Суббота 11-04-2020 Завтрак 18:06 Горох отварной с копченой грудинкой
Обед 18:06 Зубатка отварная (непластованная, кусками)
Перекус 17:57 Тесто дрожжевое для пирожков жареных сдобных и...
Четверг 09-04-2020 Обед 14:55 Бобовые (горох) в соусе со шпиком
Перекус 15:17 Бобовые (горох) в соусе
17:36 Вина сладкие белые и красные (в т.ч. шампанское)
Ужин 17:39 Антрекот
And I want it to be something like this, but I don't have the skills to Google how to implement this
День недели Дата Тип Время Блюдо Вес Блюдо Вес
Понедельник 12-04-2020 Перекус 17:57 Соус белый с рассолом 200
Вторник 07-04-2020 Перекус 17:57 Капуста тушенная 200 Рис отварной 50
Среда 06-04-2020 Завтрак 17:46 Бобовые (горох) 200
Обед 17:46 Макароны отварные 70
Перекус 17:41 Лапшевик с творогом 110
17:46 Карп жареный 240
Well, or this version of the frame will also do
День недели Дата Тип Время Избранное
Понедельник 12-04-2020 Перекус 17:57 Соус белый с рассолом - 200
Вторник 07-04-2020 Перекус 17:57 Капуста тушенная - 200, Рис отварной - 50
Среда 06-04-2020 Завтрак 17:46 Бобовые (горох) - 200
Обед 17:46 Макароны отварные - 70
Перекус 17:41 Лапшевик с творогом - 110
17:46 Карп жареный - 240
1
1 answers
You can turn a Series into a DataFrame:
s = s.to_frame(name="Избранное")
UPD:
df = pd.read_sql(sql, conn, params=(2, ))
df.columns = columns=['День недели', 'Дата', 'Время','Тип', 'Избранное', 'Вес']
res = (df
.groupby(['День недели','Дата','Тип','Время'])
['Избранное']
.apply(', '.join)
.to_frame(name='Избранное'))
Result:
In [75]: res
Out[75]:
Избранное
День недели Дата Тип Время
Воскресенье 12-04-2020 Перекус 17:57 Соус белый с рассолом
Вторник 07-04-2020 Перекус 17:57 Капуста, тушенная с яблоками, Рис от...
Понедельник 06-04-2020 Завтрак 17:46 Бобовые (горох) в соусе
Обед 17:46 Макароны отварные с овощами
Перекус 17:41 Лапшевик с творогом
17:46 Карп жареный
Пятница 10-04-2020 Перекус 17:57 Тесто для оладий
Среда 08-04-2020 Перекус 17:57 Картофель в молоке
Суббота 11-04-2020 Завтрак 18:06 Горох отварной с копченой грудинкой
Обед 18:06 Зубатка отварная (непластованная, ку...
Перекус 17:57 Тесто дрожжевое для пирожков жареных...
Четверг 09-04-2020 Обед 14:55 Бобовые (горох) в соусе со шпиком
Перекус 15:17 Бобовые (горох) в соусе
17:36 Вина сладкие белые и красные (в т.ч....
Ужин 17:39 Антрекот
16-04-2020 Обед 15:34 Ничего
1
Author: MaxU, 2020-04-09 18:07:25