【发布时间】:2019-10-31 17:57:26
【问题描述】:
我有一个可以使用下面给出的代码生成的数据框
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]
})
输入数据框如下所示
我想做的是从每个人对应的“answer”列中获取日期(interviewdate)值,并将其放在同一个人的“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”列中
【问题讨论】:
标签: python python-3.x pandas list pandas-groupby