Я хотел бы знать, как избежать ненужного дублирования при сравнении двух данных в слиянии Pandas.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я хотел бы знать, как избежать ненужного дублирования при сравнении двух данных в слиянии Pandas.

Сообщение Anonymous »

Код: Выделить всё

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
В df2 были добавлены два данных.
Я изучил их с помощью множества методов и поисков, но ближе всего я попробовал использовать слияние для создания уникальных значений и их сравнения.
Но мне не удалось создать нужное выходное значение.
Моя цель — сравнить 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
Я пытался удалить ненужные строки с помощью дедупликации и qurey.
Я также пытался создавать собственные значения и сравнивать их, но не смог создать то, что хотел.
Я пробовал искать информацию с помощью Stack Overflow и gpt.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-two-dat
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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