ЕСЛИ серия A содержит значения серии B THEN - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть две серии в пандах - python:

A = pd.Series (["W1","W2","W3","W4"])
B = pd.Series (["W1","W2","W3"])

, и цикл while выполняет итерацию серии A:

while j < len(A): 

Теперь я хочу какой-то оператор IF, когдафактическое значение j в A также указано в Серии B, затем выведите «It it in B»:

IF A[j] == B: 
   print("It its in B")

Я действительно пытаюсь несколько часов с A.isin (), но мне не удается.

Спасибо за поддержку!

1 Ответ

0 голосов
/ 10 декабря 2018

Явный цикл уровня Python обычно не рекомендуется с Pandas.Более логичным было бы использовать pd.Series.isin с логическим индексированием:

print(A[A.isin(B)])

0    W1
1    W2
2    W3
dtype: object

Затем выполнить итерацию, если необходимо;

res = A[A.isin(B)]
for val in res.values:
    print(f'{val} is in B')

Вы могли бы использовать явный цикл for с оператором if в каждом цикле.С помощью этого метода рекомендуется использовать set для поиска O (1):

B_set = set(B)
for i in range(len(A)):
    val = A.iat[i]
    if val in B_set:
        print(f'{val} is in B')

W1 is in B
W2 is in B
W3 is in B
...