pandas如何通过df2查询df1中缺失的部分值并填入补充?

举例:如果df1中含有10行,5列数据,其中部分行的几列数据缺失;df2是一个10000行(总之大量)的数据表,含有完整的5列数据,可能包含大部分df1缺失的数据,他们有某些共同的列可用于互相查询,我如何从df2中查询到对应df1缺失的数据并填入df1中,且df1仍然保持原来的行和列结构(且原有的数据不丢失)?
我试过多种方法:

  1. merge()操作会使df1与df2相同的列变成两列,增加了多余的列,没法合并df1原有的数据和df2填充的数据(他们会形成不同的列)

  2. combine_first() ,两个表的默认行索引并不相同,除非将可以用于查询的列设为每行索引,但是这样会导致df2所有行都填入了df1,虽然合并了表数据,但是形成了太多多余行数据。

本来这是一个简单的功能,但是我目前没有想到很好的简单直接的方法,可能是我对pandas不太熟悉。如果有别的包能更好的处理表格数据也可以推荐一下。
感谢。

部分回答摘自GPT:
对于您的需求,可以使用merge()方法结合fillna()方法来实现从df2中查询并填充到df1中。下面是一种可能的解决方案:

import pandas as pd

# 假设df1和df2分别为两个DataFrame对象

# 使用merge()方法将df2中与df1中某些共同列匹配的行合并到df1中
merged_df = df1.merge(df2, on=['共同列1', '共同列2'], how='left')

# 使用fillna()方法将df2中的非缺失值填充到df1中对应的缺失值位置
filled_df1 = merged_df.fillna(df1)

# filled_df1中的数据包含了从df2中查询到的缺失值填充后的结果,
# 但仍然保持了df1原有的行和列结构,原有的数据不丢失

上述代码首先使用merge()方法将df2中与df1中某些共同列匹配的行合并到df1中,通过设置how='left'参数,确保保留df1原有的行。

然后,使用fillna()方法将df2中的非缺失值填充到df1中对应的缺失值位置,其中df1参数指定了填充时使用df1的值。

经过上述操作,filled_df1中的数据将包含从df2中查询到的缺失值填充后的结果,同时保持了df1原有的行和列结构,不会丢失原有的数据。

希望这个解决方案对您有所帮助。关于处理表格数据的其他包,您也可以考虑使用datatablenumpy等库进行操作,具体选择取决于您的需求和偏好。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^