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

时间:2018-12-09 14:17:08

标签: python pandas

我正在数据框的一列中搜索已转换为列表的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 :(得分:0)

添加波浪号的操作与此相反。也许那将获得不属于parcelid_lst

的所有值

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

希望有帮助。

答案 1 :(得分: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))

答案 2 :(得分:0)

  

我还要打印或显示列表中的值列表   数据框列I中“未找到”或不存在的列表   正在搜索。

您不需要为此子集数据框。您可以过滤系列以查找在指定列表(或系列)中找不到的项目,然后使用pd.Series.unique

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

如上所述,如果您希望序列中存在重复的内容,最好将hos['Parcel ID']做成唯一值的数组。