#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 --