pandas如何按索引合并两个DataFrame并保留左表全部日期记录
问题原因
你使用pd.merge()时没有指定连接方式,该函数默认使用inner(内连接),只会保留两个DataFrame索引同时存在的行,因此合并后总日期数量会减少。
正确实现方式
有两种常用实现方案,均可以保留Result_data的全部日期,pneumonia_ARVI中无匹配日期的对应字段会自动填充为空值:
方案1:修改merge参数指定左连接
不需要提前设置索引,直接指定匹配字段date,连接方式设为left即可:
End = pd.merge(Result_data, pneumonia_ARVI, on='date', how='left')
如果你已经提前将两个表的索引设置为date,也可以用以下写法:
Result_data = Result_data.set_index('date') pneumonia_ARVI = pneumonia_ARVI.set_index('date') End = pd.merge(Result_data, pneumonia_ARVI, left_index=True, right_index=True, how='left')
方案2:使用join方法(更适配该场景)
pandas的join方法默认使用左连接,更适合以左表为基准合并的场景:
End = Result_data.join(pneumonia_ARVI.set_index('date'), on='date')
内容的提问来源于stack exchange,提问作者kostya ivanov
相关产品推荐
相关产品推荐

