Объединение двух данных листа Excel в один с помощью данных одного столбца - PullRequest
1 голос
/ 30 мая 2019
Excel1
Column1     Column2         Column3
 1           A           [xyz-5536]A    
 2           B           [xyz-5537]B
 3           C           [xyz-5538]C    
 4           D           [xyz-5539]D    

Это один тип отчета о прослеживаемости с различными элементами

Excel2
Column1        Result1      Result2
[xyz-5536]A    Pass         fail
[xyz-5537]B    fail         pass    
[xyz-5538]C    pass         fail
[xyz-5539]D    fail         pass

У меня есть два экземпляра, как указано выше, я хочу создать новый лист с результатом, так как Excel1 добавит данные, сопоставив идентификатор вКвадратная скобка и добавление result1 & result2

Я пробовал это с помощью макросов

Column1     Column2         Column3      Result1    Result2
1            A           [xyz-5536]A     pass     fail
2            B           [xyz-5537]B     fail     pass
3            C           [xyz-5538]C     pass     fail
4            D           [xyz-5539]D     fail     pass  

Это должно соответствовать приведенной выше таблице.Он должен ссылаться только на один элемент из column3 один раз.Я новичок в Python.

1 Ответ

0 голосов
/ 30 мая 2019

Один простой способ - использовать модуль pandas.

Вы можете:

  • читать файл Excel с read_excel методом (doc) .Вы
  • объединяете свои данные с методом merge (документ)
  • отбрасывайте дублирующиеся столбцы с dropметоды (документ)
  • экспорт ваши данные в новый файл Excel с to_excel метод (документ)

Вот код, предполагающий, что у вас есть два превосходных файла:

# import modules
import pandas as pd

# filename
filename_1 = "Excel1.xlsx"
filename_2 = "Excel2.xlsx"

# Pandas files
df_1 = pd.read_excel(filename_1)
df_2 = pd.read_excel(filename_2)
print(df_1)
#    Column1 Column2      Column3
# 0        1       A  [xyz-5536]A
# 1        2       B  [xyz-5537]B
# 2        3       C  [xyz-5538]C
# 3        4       D  [xyz-5539]D
print(df_2)
#        Column1 Result1 Result2
# 0  [xyz-5536]A    Pass    fail
# 1  [xyz-5537]B    fail    pass
# 2  [xyz-5538]C    pass    fail
# 3  [xyz-5539]D    fail    pass

# Merge the two dataframe
df_new = df_1.merge(df_2, left_on="Column3",
                   right_on="Column1", suffixes=('', '_df2'))
print(df_new)
#    Column1 Column2      Column3  Column1_df2 Result1 Result2
# 0        1       A  [xyz-5536]  A[xyz-5536]A    Pass     fail
# 1        2       B  [xyz-5537]  B[xyz-5537]B    fail     pass
# 2        3       C  [xyz-5538]  C[xyz-5538]C    pass     fail
# 3        4       D  [xyz-5539]  D[xyz-5539]D    fail     pass

# Remove the duplicated columns
df_new = df_new.drop(["Column1_df2"], axis=1)
print(df_new)
# Column1 Column2      Column3  Result1 Result2
# 0        1       A[xyz-5536]A    Pass    fail
# 1        2       B[xyz-5537]B    fail    pass
# 2        3       C[xyz-5538]C    pass    fail
# 3        4       D[xyz-5539]D    fail    pass

# Export to a new xlsx file
df_new.to_excel("new_file.xlsx", index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...