我正在数据框的一列中搜索已转换为列表的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
我想做的是一旦搜索了列表并且数据框显示了“找到的”值,我也想打印或显示列表中“未找到”的值的列表,或者我正在搜索的数据框列中不存在。
是否有调用此方法的特定方法?
提前谢谢!
答案 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']
做成唯一值的数组。