我有一个如下所示的数据帧
data_file= pd.DataFrame({'person_id':[1,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,np.nan],
'observation': ['Age','interviewdate','marital_status','interviewdate','Age','interviewdate','marital_status','Age','interviewdate','marital_status'],
'answer': [21,'21/08/2017','Single','22/05/2217', 26,'11/03/2010','Single',41,'31/09/2012','Married']
})
我想做的是,从answer
列获取date values
,并将其放入ob.date
列。提供的数据框显示person_id =1
在21/08/2017
回答了关于年龄的问题,在22/05/2017
他回答了关于marital_status
的问题
这是我根据另一个帖子的建议尝试的
s = data_file[(data_file.observation == 'interviewdate')].set_index('person_id')['answer']
data_file['ob.date'] = data_file['person_id'].map(s)
但这并不适用于我得到的duplicate index error
。我怎样才能避免这个问题并使它足够有效?你知道吗
因此,任何优雅而有效的解决方案都会有所帮助。Person\u id=1有两个日期值,所以用interviewdate
观察值的answer
列中的值填充interviewdate
观察值上方的所有行
我怎么能期望我的输出是这样的?你知道吗
全部取决于数据-首先按条件按
answer
设置新列,然后按组按前后填充重新计算缺少的值:详细信息:
第一个用于对每个组进行倒排,因为
interviewdate
是边行-前面的所有值都是相同的子组。Last is add forwrd filling for repalce Last NaNs per groups-不替换为bfill
:相关问题 更多 >
编程相关推荐