代码之家  ›  专栏  ›  技术社区  ›  Anna Ortega

检查pandas数据帧中的任何行值是否存在于python中的文件内容中

  •  0
  • Anna Ortega  · 技术社区  · 2 年前

    我有一个名为df的数据帧,它有一个ID列和几行。我正在读取一个文件,希望快速检查数据帧的ID列中的任何ID是否在文件内容中。以下是我目前正在做的事情。它是有效的,但我相信有一种更有效的方法可以检查文件中是否存在数据帧列中的任何行。

        # Read in and store file contents
        file = open('myfile.txt', 'r')
        contents = file.read()
    
        # Loop through each ID in the ID column and look for it in the file
        for id in df['ID']:
            if id in contents:
                print(f"found {id}")
    
    2 回复  |  直到 2 年前
        1
  •  1
  •   Tom Wagg    2 年前

    可能 df.isin() (文档 here )会有用吗?然后,您可以创建一个新列,该列是文件中是否存在每个ID的布尔掩码。

    df["id_found"] = df['ID'].isin(contents)
    

    编辑:鉴于此 contents 是一个字符串,您可以将lambda函数与 df.apply 这样地:

    df["id_found"] = df.apply(lambda df: df['ID'] in contents, axis=1)
    

    然后,您可以查看通过应用遮罩找到的ID

    print(df["ID"][df["id_found"]])
    
        2
  •  0
  •   Usman Fawad    2 年前

    的确如前所述,您想查看是否包括ANY ID,这意味着如果出现一个,您需要一个指示。 您可以使用以下代码:

    with open('myfile.txt', 'r') as file:
    contents = file.read()
    
    if (df['ID'].isin(contents)).any():
        print("Found at least one matching ID")