Хотя этот пример является числовым, мои данные — нет, я использую его как образец набора данных.< /p>
Код: Выделить всё
import pandas as pd
# Sample DataFrames
ProdDF = pd.DataFrame({'Project.name': ['Project A', 'Project B', 'Project C', 'Project D'],
'Line identifier': [1, 2, 3, 4],
'Column1': [10, 20, 30, 40],
'Column2': [100, 200, 300, 400]})
TestDF = pd.DataFrame({'Project.name': ['Project A', 'Project B', 'Project C', 'Project E'],
'Line identifier': [1, 2, 3, 5],
'Column1': [10, 20, 35, 45],
'Column2': [100, 200, 350, 450],
'Column3': [100, 200, 350, 450]})
Код: Выделить всё
key_columns = ['Project.name', 'Line identifier']
# Merge DataFrames on key columns
merged_df = pd.merge(ProdDF, TestDF, on=key_columns, how='outer', suffixes=('_Prod',
'_Test'))
print(merged_df)
output = pd.DataFrame(columns=['Row', 'Column', 'Misaligned Data'])
for index, row in merged_df.iterrows():
for column in merged_df.columns:
if column not in key_columns:
prod_column = column + '_Prod'
test_column = column + '_Test'
if prod_column in merged_df.columns and test_column in merged_df.columns:
if row[prod_column] != row[test_column]:
output = output.append({'Row': index, 'Column': column, 'Misaligned Data': (row[prod_column], row[test_column])}, ignore_index=True)
print(output)
Код: Выделить всё
Project.name Line identifier Column1_Prod Column2_Prod Column1_Test Column2_Test
Column3
0 Project A 1 10.0 100.0 10.0 100.0
100.0
1 Project B 2 20.0 200.0 20.0 200.0
200.0
2 Project C 3 30.0 300.0 35.0 350.0
350.0
Код: Выделить всё
Project.Name, Line identifier Prod Test
Project C 3 30 35
Project A 1 100 NaN
Project A 2 200 NaN
Project A 3 250 NaN
Подробнее здесь: https://stackoverflow.com/questions/786 ... of-columns