Копирование столбцов из одного файла Excel в другой файл Excel с помощью python

#python #excel #dataframe

#python #excel #фрейм данных

Вопрос:

У меня есть два листа Excel, я пытаюсь скопировать содержимое с одного листа Excel на другой с помощью pandas.

Лист First_excel —

 Name    Class   City    Date    Misc    Misc2   Blank Col
                 AA             xxx      12      --
                 AA             xx       32      --
                 BB             yyyyy    54      --
                 BB             zz       23      -- 
                 CC             yy       54      --
                 CC             ww       32      --
 

Лист Second_excel —

 Name    Class   Date    City
Tom     Q,W   01-11-20   AA
Jerry   W     05-03-19   AA
Don     E,R   06-05-20   BB
Rob     T,Y   02-01-20   BB
Mike    W     05-03-18   CC
Ann     O,p   04-09-20   CC
 

Окончательный ожидаемый лист —

 Name    Class   City    Date    Misc    Misc2   Blank Col
Tom     Q,W     AA   01-11-20   xxx     12       --
Jerry   W       AA   05-03-19   xx      32       --
Don     E,R     BB   06-05-20   yyyyy   54       --
Rob     T,Y     BB   02-01-20   zz      23       --
Mike    W       CC   05-03-18   yy      54       --
Ann     O,p     CC   04-09-20   ww      32       --



df1 = pd.read_excel("new_excel_file.xlsx", sheet_name = "Sheet1")
df2 = pd.read_excel("new_excel_file.xlsx", sheet_name = "Sheet2")
result = pd.concat([df1,df2])
 

Это результирующий фрейм данных, который я получил

     Name    Class   City    Date        Misc    Misc2   Blank Col   
0   NaN     NaN     AA      NaT         xxx     12.0    --          
1   NaN     NaN     AA      NaT         xx      32.0    --          
2   NaN     NaN     BB      NaT         yyyyy   54.0    --          
3   NaN     NaN     BB      NaT         zz      23.0    --          
4   NaN     NaN     CC      NaT         yy      54.0    --          
5   NaN     NaN     CC      NaT         ww      32.0    --          
0   Tom     Q,W     AA      2020-11-01  NaN     NaN     NaN         
1   Jerry   W       AA      2019-03-05  NaN     NaN     NaN         
2   Don     E,R     BB      2020-05-06  NaN     NaN     NaN         
3   Rob     T,Y     BB      2020-01-02  NaN     NaN     NaN         
4   Mike    W       CC      2018-03-05  NaN     NaN     NaN         
5   Ann     O,p     CC      2020-09-04  NaN     NaN     NaN         
 

Мои идеи состояли NaN в том, чтобы заменить фактические значения из df2 или second_excel в их позициях.
Пожалуйста, помогите мне получить ожидаемый результат.

Ответ №1:

Вы можете использовать fillna для объединения двух столбцов с одинаковыми именами, а затем добавить последний столбец. Сначала загрузите файлы:

 df1 = pd.read_excel("new_excel_file.xlsx", sheet_name = "Sheet1")
df2 = pd.read_excel("new_excel_file.xlsx", sheet_name = "Sheet2")
 

Заполните пустые столбцы в df1 с помощью df2:

 fill = df1.fillna(df2[['Name', 'Class', 'Date']])
 

Затем присоединитесь к последнему столбцу:

 result = teste.join(df2[['City']])
 

Редактировать

Поскольку вы отредактировали свой пост, просто используйте fill = df1.fillna(df2) , и он будет делать

Вывод:

     Name Class  City                 Date   Misc  Misc2 Blank Col 
0    Tom   Q,W    AA  2020-11-01 00:00:00    xxx     12        -- 
1  Jerry     W    AA  2019-03-05 00:00:00     xx     32        -- 
2    Don   E,R    BB  2020-05-06 00:00:00  yyyyy     54        --  
3    Rob   T,Y    BB  2020-01-02 00:00:00     zz     23        --  
4   Mike     W    CC  2018-03-05 00:00:00     yy     54        --  
5    Ann   O,p    CC  2020-09-04 00:00:00     ww     32        --