Python для использования нескольких условий в 2 кадрах данных и вывода выброса

#python #if-statement #conditional-statements

Вопрос:

Привет, у меня есть 2 фрейма данных с несколькими столбцами, но только с отображением соответствующих столбцов:

df1:

Колонка А
Чарльзбаркли
Майкл Джордан

df2:

Колонка А Колонка В
чарльз Баркли ДА
Майкл Джордан НЕТ

Я хочу добиться следующего:

  1. Я хочу сначала сравнить столбец A df1 со столбцом A df2, игнорируя пробел и чувствительный к регистру и делая все строчными без пробела (так что это может быть Майкл Джордан).
  2. Если столбец B говорит «Нет», я хочу создать новый столбец и вывести только те строки, которые соответствуют имени И имеют » Нет «для столбца B в df2, со словом «Не зарегистрирован» в Python, напечатанным следующим образом:
Колонка А Результат
майкл Джордан Не Зарегистрирован

Как бы я смог добиться этого с помощью кода на Python?

Заранее спасибо.

Ответ №1:

Поскольку вы сказали, что хотите создать новый столбец, я заполнил другие значения противоположным «зарегистрирован».

 import pandas as pd  df1 = pd.DataFrame({"A": ["CharlesBarkley", "Michael Jordan"]}) df2 = pd.DataFrame({"A": ["charles barkley", "MichaelJordan"], "B": ["Yes", "No"]})  # Create a mask same_name = df1["A"].str.replace(" ", "").str.lower() == df2["A"].str.replace(" ", "").str.lower()  df1["result"] = "Registered" # Apply the mask with another mask to the column "result" df1.loc[(same_name amp; (df2["B"] == "No")), "result"] = "Not Registered" print(df1)  

Это дает вам:

 A result 0 CharlesBarkley Registered 1 Michael Jordan Not Registered  

Если вы хотите иметь только те результаты, которые содержат «Не зарегистрированы»,:

 df1[df1["result"] == "Not Registered"]