我有两个 Dataframe A和B,它们包含不同的患者数据集,需要将B中的某些列附加到A中--但仅限于包含同一患者和访视信息的行,即A和B在两个特定列中具有匹配值。B比A长,A中的所有行并不都包含在B中。我不知道如何在不循环的情况下实现这一点,但是很多人不鼓励在panda Dataframe 上循环(除了我的循环解决方案不起作用的事实之外,因为“只能比较标签相同的Series对象”)。我读了这里的选项How to iterate over rows in a DataFrame in Pandas,但是不知道我可以在这里应用哪一个,希望能得到任何提示!
玩具示例(实际 Dataframe 大约有300行):
dict_A = {
'ID': ['A_190792','X_210392','B_050490','F_311291','K_010989'],
'Visit_Date': ['2010-10-31','2011-09-24','2010-30-01','2012-01-01','2013-08-13'],
'Score': [30, 23, 42, 23, 31],
}
A = pd.DataFrame(dict_A)
dict_B = {
'ID': ['G_090891','A_190792','Z_060791','X_210392','B_050490','F_311291','K_010989','F_230989'],
'Visit_Date': ['2013-03-01','2010-10-31','2013-04-03','2011-09-24','2010-30-01','2012-01-01','2013-08-13','2014-09-09'],
'Diagnosis': ['F12', 'G42', 'F34', 'F90', 'G98','G87','F23','G42'],
}
B = pd.DataFrame(dict_B)
for idx, row in A.iterrows():
A.loc[row,'Diagnosis'] = B['Diagnosis'][(B['Visit_Date']==A['Visit_Date']) & (B['ID']==A['ID'])]
# Appends Diagnosis column from B to A for rows where ID and date match
我看过这个问题Append Columns to Dataframe 1 Based on Matching Column Values in Dataframe 2,但唯一的答案是非常具体的,也没有解决是否可以/应该使用循环的问题
1条答案
按热度按时间am46iovg1#
我想你可以使用合并:
如果您只想将A: