#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
Я надеюсь, что это то, что вы ищете.
Спасибо.