首页 文章

搜索列中的多个字符串,但显示Python Pandas的错误

提问于
浏览
1

我正在数据框中的一列中搜索已转换为列表的CSV中包含的值列表 . 搜索这些值不是问题所在 .

import pandas as pd

df = pd.read_csv('output2.csv')
hos = pd.read_csv('houses.csv')
parcelid_lst = hos['Parcel ID'].tolist()
result = df.loc[df['PARID'].isin(parcelid_lst)]

result

我想要做的是,一旦搜索到列表并且数据框显示“找到”值,我还要打印或显示列表中“未发现”或不存在的值列表在我正在搜索的数据框列中 .

有没有特定的方法来调用呢?

先感谢您!

3 回答

  • 0

    在重新考虑我的问题并稍微考虑一下之后,我找到的解决方案是将“PARID”列中数据框中的所有值转换为列表 . 然后将'parcelid_lst'与它进行比较 .

    这导致了数据框中不存在但在'parcelid_lst'中存在的所有值的列表

    df = pd.read_csv('output2.csv')
    allparids = df['PARID'].tolist()
    hos = pd.read_csv('houses.csv')
    parcelid_lst = hos['Parcel ID'].tolist()
    list(set(parcelid_lst) - set(allparids))
    
  • 0

    我还想打印或显示列表中的值“列表”,这些值在我正在搜索的数据框列中“不存在”或不存在 .

    您不需要为此配置数据帧 . 您可以过滤系列中未找到指定列表(或系列)中的项目,然后使用pd.Series.unique

    not_found = df.loc[~df['PARID'].isin(hos['Parcel ID'].unique()), 'PARID'].unique()
    

    如上所述,如果您希望系列中存在重复项,那么最好使 hos['Parcel ID'] 成为唯一值数组 .

  • 0

    添加波浪号则相反 . 也许这会得到所有不属于 parcelid_lst 的值

    not_found = df.loc[~df['PARID'].isin(parcelid_lst)]

    希望有所帮助 .

相关问题