в пандах, как перебрать два кадра данных на основе одного и того же идентификатора

1

панд

У меня есть два кадра данных и вы хотите сделать вложенный цикл.

Я хочу повторить каждую строку из df1 и выбрать col1 (id) и col2.

Затем он будет принимать идентификатор и перебирать через df2 и проверять, имеет ли строка один и тот же идентификатор, а затем сравнить столбец из df1 со столбцом в df2

если col2 в df1 соответствует col3 в df2, он вернет True и добавит его в строку df1.

df1
col1    col2   col3   col3
 01      A     S      True
 02      D     F      True
 03      Z     B      False

df2
col1    col2   col3
 01      A      A
 02      B      A
 02      D      F
 02      C      D
 02      D      V
 03      X      W
 03      E      X
Теги:
pandas
dataframe
for-loop
if-statement

2 ответа

1
Лучший ответ

IIUC с использованием tuple с isin

df1[['col1','col2']].apply(tuple,1).isin(df2[['col1','col3']].apply(tuple,1))
Out[1051]: 
0     True
1     True
2    False
dtype: bool
1

Настроить

a = df1[['col1', 'col2']].values
b = df2[['col1', 'col2']].values

Используя вещание с any и all:

(a == b[:, None]).any(0).all(1)

array([ True,  True, False])
  • 0
    Мне жаль. что если df1 имеет более двух столбцов?
  • 0
    @VuLe обновлен, поэтому он выбирает только два столбца

Ещё вопросы

Сообщество Overcoder
Наверх
Меню