Как записать несколько фреймов данных в один лист Excel? - PullRequest
0 голосов
/ 18 октября 2018

Я знаю, как написать несколько фреймов данных на разных листах в одном Excel.

Но теперь я хочу написать два разных фрейма данных в одном Excel по горизонтали.

Например:

enter image description here

Единственный известный мне способ

pd.concat((df1.reset_index() , df2.reset_index(), axis=1).to_excel('1.xlsx') 

Но это не удобно.

Причина:

  1. concat, два df испортили бы порядок столбцов, нужно сделать порядок вручную.
  2. придется сбросить индекс (df1 - индекс даты и времени, df2 - индекс пользовательской строки), что приведет к уродливому представлению.
  3. Регулировать положение сложно, что если мне понадобится один кадр данных слева и два кадра вертикально вертикально?

PS: это просто inconvenient, чтобы использовать pd.concat, потому что нужно приложить много усилий, чтобы этот Excel выглядел красиво.

Я также пытался использовать pd.ExcelWriter, который может назначить startcol:

  1. задание 1:

    file_name = 'xxx.xlsx'
    writer = pd.ExcelWriter(file_name, engine='xlsxwriter', 
                        datetime_format='yyyy-mm-dd',
                        date_format='yyyy-mm-dd')
    df1.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=0)
    
  2. задание 2

    file_name = 'xxx.xlsx'
    writer = pd.ExcelWriter(file_name, engine='xlsxwriter', 
                        datetime_format='yyyy-mm-dd',
                        date_format='yyyy-mm-dd')
    df2.to_excel(writer, sheet_name=sheet_name, startrow=0 , startcol=df1.shape[1]+2)
    

Но это перезаписывает исключениеel ....

Надеюсь, есть простой способ записать кадр данных в положение startrow, startcol без перезаписи файла?

1 Ответ

0 голосов
/ 18 октября 2018

Создание столбцов в df1 и df2 со значениями в качестве номеров строк.Таким образом, вы сохраните порядок двух фреймов данных.

2) Объедините два фрейма данных в столбцах, созданных на первом шаге

3) Нажмите, чтобы превзойти

df1['key']= df1.reset_index().index

df2['key'] = df2.reset_index().index

pd.merge(df1, df2, how='outer',on='key').to_excel('1.xlsx') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...