У меня есть кадр данных, который может быть сгенерирован с использованием приведенного ниже кода
data_file= pd.DataFrame({'person_id':[1,1,1,2,2,2,3,3,3],'ob.date': [np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan],
'observation': ['Age','interviewdate','marital_status','Age','interviewdate','marital_status','Age','interviewdate','marital_status'],
'answer': [21,'21/08/2017','Single',26,'11/03/2010','Single',41,'31/09/2012','Married'],
'visit.date': [np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan]
})
Входной кадр данных выглядит так, как показано ниже
![enter image description here](https://i.stack.imgur.com/LxxKh.png)
То, что я хотел бы сделать, это получить значение даты (интервью-даты) из столбца 'answer', соответствующего каждому человеку, и поместить его в столбцы 'ob.date' и 'visit.date' для того же человека.
Я попытался отфильтровать фрейм данных, но не уверен, что делать дальше.Это происходит только для отфильтрованных строк, но я хочу, чтобы даты были заполнены в исходном или входном фрейме данных
df2 = data_file[(data_file.observation == 'interviewdate')]
df2.reset_index(inplace=True)
df3=data_file.merge(df2)
df3['ob.date']=df2['answer']
df3['visit.date']=df2['answer']
Как получить результат, который будет выглядеть так, как показано ниже?Как видите, данные интервью каждого человека заполняются в столбцах «ob.date» и «visit.date»
![enter image description here](https://i.stack.imgur.com/hYW2h.png)