具体来说,我想遍历两个数据框,一个较大,另一个较小。最终,我想比较某个列中的值。我尝试创建一个嵌套的for循环;外循环遍历大数据框,而内循环遍历小数据框,但是我遇到了困难。我正在寻找一种方法来识别大型数据框中与小型数据框中匹配的“名称”和“值”。背景信息:我正在使用熊猫库。大数据框:小数据框:Name ValueSF 12.84TH -49.45 最佳答案 如果目标是遍历一个或多个DataFrame,则明确的for循环通常是错误的举动。在这种情况下,因为您正在尝试 确定我的大数据框中的“名称”和“值”与我的小数据框中的匹配,您要查找的操作是pd.merge或pd.DataFrame.join,它们在“幕后”进行比较并返回匹配信息。因此,假设您有2个DataFrame,它们分别称为large和small。然后import pandas as pdnew_large = pd.merge(left=large, right=small, how='left', on=('Name', 'Value'), indicator=True)new_large._merge = new_large._merge.apply(lambda x: 1 if x=='both' else 0)通过在large和small(how='left')之间进行左连接,pd.merge返回large中包含small元组中('Name', 'Value')中匹配项的行。然后,大多数繁重的工作都由indicator关键字完成,该关键字引用了pd.merge版本0.25.0 docs: 如果为True,则使用以下命令将一列添加到输出数据框架“ _merge”中: 每行来源的信息。 信息列为分类类型,其值为“ left_only” 对于其合并键仅出现在“左” DataFrame中的观察, “ right_only”用于其合并键仅出现在“ right”中的观察值 DataFrame,如果两者都找到观察的合并键,则为“两者”。因此,new_large是原始的large DataFrame,其中有一个名为_merge的新列,其条目对应于与large匹配的small行,仅在Name上(值)以及'left_only'和Name上匹配的行;后者的值为Value。最后一步是按照您的指定将both和both更改为left_only和1。现在,左联接返回它所做的操作,因为小0中的两个Name值都出现在DataFrame large中,因此DataFrame和large的左联接返回整个 small。如果不是这种情况,则large会产生DataFrame值,您将不得不使用一些技巧来获得漂亮的布尔(整数)列,以显示匹配的内容和不匹配的内容。 HTH。关于python - 如何遍历两个大小不同的数据框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57277264/ 10-10 21:52