Используя python и pandas, мне нужно разбить результаты sql-запроса на страницы в наборах из 24 строк в графическую таблицу . Как мне это сделать?

#python #sql #pandas #dataframe #pagination

Вопрос:

Я могу создать фрейм данных из sql — запроса df=pd.read_sql(sql_query, myconn), и он работает при создании таблицы plotly, но я не знаю, как прочитать только 24 строки фрейма данных-создайте таблицу plotly, запишите ее в изображение, а затем перезапустите в 25-й строке. В таблице plotly используются ячейки=dict(значения=df.transpose().значения, и это работает. Я пробовал функции pd объединять, добавлять и т. Д. Во временные фреймы данных. Я пробовал циклы, в то время как циклы я всегда получаю ошибку. Вопрос в том, как вы подмножествуете набор строк в фрейме данных pandas из sql-запроса, сохраняя значения столбцов для каждой группы подмножеств?

Комментарии:

1. Плохая формулировка Я могу сделать все, включая таблицу графиков, но я не могу разбить фрейм данных на группы по 24 строки со столбцами в таблице графиков

2. всегда помещайте полное сообщение об ошибке (начинающееся со слова «Обратная связь») в вопрос (не комментарий) в виде текста (не скриншот, не ссылка на внешний портал). Есть и другая полезная информация.

3. может быть, вам следует использовать SQL-запрос с limit 24 и некоторыми offset

4. если у вас есть ошибка, вы должны ее показать — мы не можем запустить ваш код, мы даже не можем его видеть, мы не можем видеть ошибки, которые вы получаете, и мы не можем читать в ваших мыслях — вы должны добавить все детали, о которых идет речь (не в комментариях)

5. Хорошо, мой 2-й пост никогда не мог понять, как поместить сюда весь код. Я понял, что сюжетно нужен тип dict для ячеек, и, поскольку я не использовал значения столбцов sql, фрейм данных был излишним. Все еще не уверен, правильно ли отформатированы приведенные ниже фрагменты кода.

Ответ №1:

 temp_cursor.execute(sql_query1)
table_rows=temp_cursor.fetchall()

rowcnt=len(table_rows)
table_output=table_rows[0]

row = 1
while row < rowcnt:
    table_output.update(table_rows[row])
    if row % 24 == 0:
        ### call picture slide builder
       prs=table_slide_builder(awsconn, prs, pres_slide,table_output, orgid, png_file_path,function_name)
       row=row 1
       if row < rowcnt:
          table_output=table_rows[row]
    row=row 1

    #### this is in case there is any remaining rows count < 24 but will not print a dup slide if table_rows is multiple of 24
if rowcnt % 24 != 0 and rowcnt != 0:
    ### call  picture slide builder
    prs=table_slide_builder(awsconn, prs, pres_slide,table_output, orgid, png_file_path,function_name)

#### in table_slide_builder

cost_ops_24_table_trace = go.Table(
    columnwidth=[15] [15], 
    header=dict(values=['<b>Account</b>',
    '<b>Region</b>','<b>Resource</b>', '<b>Salary</b>', '<b>Salary Amount</b>','<b>Description</b>'],
    fill_color ='#021F5F',
    font_family ='Arial',
    font_color ='#FFFFFF',
    font_size =28,
    height =80,
    align =['center']
    ),
    cells = dict(values=table_output,
        fill_color='rgb(255,255,255)',
        font_color='rgb(0,0,0)',
        font_family='Arial',
        font_size=24,
        align=['right']*5,
        line = dict(color='#000000'),
        height = 40,
        line_width=1
    )
)
cost_ops_24_layout = go.Layout(width=2450, height=1067, autosize=False)
cost_ops_24_fig = go.Figure(data=[cost_ops_24_table_trace], layout=cost_ops_24_layout)
               mytablefile=png_file_path name_png_file(orgid,function_name,slide.slide_id, placeholderidx)

cost_ops_24_fig.write_image(mytablefile, format='png', scale=1.2, width=2450, height=1067)
 

Комментарии:

1. если это решение вашей проблемы, то вы могли бы описать, что вы делаете. Если это не решение, то вам следует добавить его в исходный вопрос.