Как выполнить левое соединение и игнорировать значение по умолчанию? ⇐ Python
-
Гость
Как выполнить левое соединение и игнорировать значение по умолчанию?
Таблица df1 (фрейм данных Pandas):
id1 тип кота 0 1 а 0 1 1 б 0 2 2 а 8 3 2 а 9 Таблица df2:
тип id2 cat 0 0 а 8 1 0 а 9 2 1 а 8 3 1 а 9 4 2 а 8 5 3 а 9 6 4 б 7 7 5 б 8 Я выполняю левое соединение:
merged = pd.merge(df1, df2, How='left') Я снова делаю это с Pandas, но я мог бы использовать SQL и получаю:
тип id1 cat id2 0 1 а 0 НЭН 1 1 б 0 НЭН 2 2 а 8 0,0 3 2 а 8 1,0 4 2 а 8 2.0 5 2 а 9 0,0 6 2 а 9 1,0 7 2 а 9 3,0 Однако я хочу рассматривать 0 в столбце cat df1 как подстановочный знак, как будто он включает ВСЕ категории. У него нет выражения, поэтому его следует исключить из слияния.
В этом примере результат будет включать все строки из df2, поскольку совпадать должен только столбец type.
Таблица df1 (фрейм данных Pandas):
id1 тип кота 0 1 а 0 1 1 б 0 2 2 а 8 3 2 а 9 Таблица df2:
тип id2 cat 0 0 а 8 1 0 а 9 2 1 а 8 3 1 а 9 4 2 а 8 5 3 а 9 6 4 б 7 7 5 б 8 Я выполняю левое соединение:
merged = pd.merge(df1, df2, How='left') Я снова делаю это с Pandas, но я мог бы использовать SQL и получаю:
тип id1 cat id2 0 1 а 0 НЭН 1 1 б 0 НЭН 2 2 а 8 0,0 3 2 а 8 1,0 4 2 а 8 2.0 5 2 а 9 0,0 6 2 а 9 1,0 7 2 а 9 3,0 Однако я хочу рассматривать 0 в столбце cat df1 как подстановочный знак, как будто он включает ВСЕ категории. У него нет выражения, поэтому его следует исключить из слияния.
В этом примере результат будет включать все строки из df2, поскольку совпадать должен только столбец type.