Сравнение фреймов данных с двумя разными количествами столбцовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сравнение фреймов данных с двумя разными количествами столбцов

Сообщение Anonymous »

Мне нужно сравнить два фрейма данных с разными столбцами и найти различия между ними.
Хотя этот пример является числовым, мои данные — нет, я использую его как образец набора данных.< /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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»