Введите значение столбца на основе другого столбца другого фрейма данных в Python

#python #dataframe

#питон #фрейм данных

Вопрос:

df1:

 ID  0 9712  1 9920  2 9712  3 9560  4 9560  

df2:

 ID Absent Comp-off 0 9712 12/15/2021  1 9920 4/11/2021 2 9712 08/30/2021 3 9560 07/3/2021  4 9560   

В df1 мне нужно создать столбец «Статус». Для идентификатора, если какие-либо данные присутствуют в столбцах «Отсутствует» или «отсутствует», статус df2-это «A» или «P». Как я могу достичь этого, используя условие if else?

Комментарии:

1. Какой пакет вы используете для своих фреймов данных?

2. Я использую пакет python по умолчанию

Ответ №1:

Используйте этот код, он не оптимизирован, но он может выполнить эту работу.

Я воссоздал ваши dataframe имена вот так ниже,

 import pandas as pd  df1 = pd.DataFrame({'ID':['9712','9920','9712','9560','9560']}) df2 = pd.DataFrame({'ID':['9712','9920','9712','9560','9560'],  'Absent':['12/15/2021','','','07/3/2021',''],  'Comp-off':['','4/11/2021','08/30/2021','','']})  

и вот решения,

 status =[] for i,j in df2.iterrows():  if j['Absent'] != '':  status.append('A')  elif j['Comp-off'] != '':  status.append('P')  else:  status.append('')  df1['Status'] = status  

Пример вывода:

 ID Status 0 9712 A 1 9920 P 2 9712 P 3 9560 A 4 9560   

Ответ №2:

Попробуйте использовать этот код:

 b1=pd.isnull(df2['Absent']) b2=pd.isnull(df2['Compoff']) df['Status'] =['P' if b else 'A' for b in np.array(b1amp;b2)]  

И это пример вывода, который я получил.

 df   ID Status 0 9712 A 1 9920 A 2 9712 A 3 9560 A 4 9560 P  

Я надеюсь, что это то, что вы ищете.

Спасибо.