Код: Выделить всё
import pandas
df1 = pandas.DataFrame(
{
'code': ['001', '001'],
'name': ['test1', 'test1'],
'date': ['2024-01-01', '2024-01-01'],
'value1': [1, 2],
'value2': [1, 2],
'sum': [2, 4]
}
)
df2 = pandas.DataFrame(
{
'code': ['001', '001', '001', '002'],
'name': ['test1', 'test1', 'test1', 'test2'],
'date': ['2024-01-01', '2024-01-01', '2024-01-01', '2024-02-01'],
'value1': [1, 2, 3, 4],
'value2': [1, 2, 3, 4],
'sum': [2, 4, 6, 8]
}
)
result = pandas.merge(df1, df2, on=['code', 'name', 'date'], how='outer', indicator=True)
print(result[['code', 'name', 'date', 'sum_x', 'sum_y', '_merge']])
Код: Выделить всё
code name date sum_x sum_y _merge
0 001 test1 2024-01-01 2.0 2 both
1 001 test1 2024-01-01 2.0 4 both
2 001 test1 2024-01-01 2.0 6 both
3 001 test1 2024-01-01 4.0 2 both
4 001 test1 2024-01-01 4.0 4 both
5 001 test1 2024-01-01 4.0 6 both
6 002 test2 2024-02-01 NaN 8 right_only
Я изучил их с помощью множества методов и поисков, но ближе всего я попробовал использовать слияние для создания уникальных значений и их сравнения.
Но мне не удалось создать нужное выходное значение.
Моя цель — сравнить 1 :1 что было создано и что потеряно в df1 и df2.
Я все время пытался удалить значения строк, которые были излишне созданы во время слияния, но это не сработало.
Материал, который я хочу создать, как показано ниже.
Код: Выделить всё
code name date sum_x sum_y _merge
0 001 test1 2024-01-01 2 2 both
4 001 test1 2024-01-01 4 4 both
5 001 test1 2024-01-01 NaN 6 right_only
6 002 test2 2024-02-01 NaN 8 right_only
Я также пытался создавать собственные значения и сравнивать их, но не смог создать то, что хотел.
Я пробовал искать информацию с помощью Stack Overflow и gpt.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-two-dat