![](/img/trans.png)
[英]Alternative to pandas isin() to remove unwanted rows which contain specific values?
[英]How to remove all Pandas rows of lists if they contain specific values?
我正在尋找一種方法如何從列表中刪除包含任何值的所有行:
詮釋:
df = pd.DataFrame({
"ID": [
[12, 1383],
[2898, 1871, 223],
[ 2855, 519, 12],
[55, 519],
[1230, 89564, 1247]],
"number":[1,2,3,4,5]
})
lst = [12, 55]
出去:
df = pd.DataFrame({
"ID": [
[2898, 1871, 223],
[1230, 89564, 1247]],
"number":[1,2,3,4,5]
})
我想出了這個解決方案:
df = [k for k in df['ID'] if not any(j in lst for j in k)]
它只適用於這些簡化的數據,但不適用於其他情況,因此我正在尋找一些替代方法。 謝謝你。
使用boolean indexing
與set.isdisjoint
:
df = df[df['ID'].map(set(lst).isdisjoint)]
#list comprehension alternative
#df = df[[set(lst).isdisjoint(x) for x in df['ID']]]
print (df)
ID number
1 [2898, 1871, 223] 2
4 [1230, 89564, 1247] 5
另一種可能的解決方案:
mask = df['ID'].map(lambda x: any(y in lst for y in x))
df = df.drop(df[mask].index)
Output:
ID number
1 [2898, 1871, 223] 2
4 [1230, 89564, 1247] 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.