Панды сравнивают значения 1 столбца с другим столбцом данных, находят совпадающие строки

У меня есть база данных, которую я добавляю в таблицу событий и аварийных сигналов SQL (df1), и у меня есть txt-файл кодов аварийных сигналов и свойств (df2), которые нужно отслеживать. Хотите использовать значения из 1 столбца из df2, для которых каждое значение необходимо перепроверять по отношению ко всем значениям столбца в df1, и выводить все строки любого из них, которые соответствуют, в другой кадр данных df3.

df1     A   B   C   D
0     100  20   1   1
1     101  30   1   1
2     102  21   2   3
3     103  15   2   3
4     104  40   2   3

df2     0   1   2   3   4
0      21   2   2   3   3
1      40   0 NaN NaN NaN

Выведите целые строки из df1, в которых столбец B соответствует любому из значений столбца 0 df2, в df3.

df3     A   B   C   D
0     102  21   2   3
1     104  40   2   3

Я смог получить отдельные результаты, используя:

df1[df1['B'] == df2.iloc[0,0]]

Но мне нужно что-то, что сделает это в большем масштабе.

1 ответ

Решение

Способ 1: merge

Используйте слияние, на B а также 0, Затем выберите только df1 столбцы

df1.merge(df2, left_on='B', right_on='0')[df1.columns]

     A   B  C  D
0  102  21  2  3
1  104  40  2  3

Способ 2: loc

Альтернативно использовать loc найти строки в df1 где B есть совпадение в df2 колонка 0 с помощью .isin:

df1.loc[df1.B.isin(df2['0'])]

     A   B  C  D
2  102  21  2  3
4  104  40  2  3
Другие вопросы по тегам