首页 > 解决方案 > 从 Pandas DF 中删除包含列表中元素的行

问题描述

假设我有一个 DF:

students = [ ('jack', 34, 'Sydeny' , 'Australia') ,
             ('Riti', 30, 'Delhi' , 'India' ) ,
             ('Vikas', 31, 'Mumbai' , 'India' ) ,
             ('Neelu', 32, 'Bangalore' , 'India' ) ,
             ('John', 16, 'New York' , 'US') ,
             ('Mike', 17, 'las vegas' , 'US')  ]

dfObj = pd.DataFrame(students, columns = ['Name' , 'Age', 'City' , 'Country'], index=['a', 'b', 'c' , 'd' , 'e' , 'f']) 

我有一个清单:

[Vikas, Neelu, Jack]

如何从我的 DF 中删除包含此列表中元素的行。我的谷歌搜索只向我展示了如何按列索引或条件(如生命值)来删除列低于或高于某个整数值

标签: pythonpython-3.xpandas

解决方案


remove_words = ['Vikas', 'Neelu', 'Jack']

result = dfObj[~dfObj.Name.isin(remove_words)]

# display(result)

   Name  Age       City    Country
a  jack   34     Sydeny  Australia
b  Riti   30      Delhi      India
e  John   16   New York         US
f  Mike   17  las vegas         US

忽略大小写

  • 注意'Jack'不一样'jack'
  • map remove_words小写 ( str.lower)
  • 进行布尔检查时 转换Name为小写。pandas.Series.str.lower
    • 这将使Name列中值的大小写保持不变。
# map the list of words to lowercase
remove_words = list(map(str.lower, ['Vikas', 'Neelu', 'Jack']))

# cast the Name column as lowercase when checking remove_words
result = dfObj[~dfObj.Name.str.lower().isin(remove_words)]

# display(result)
   Name  Age       City Country
b  Riti   30      Delhi   India
e  John   16   New York      US
f  Mike   17  las vegas      US

推荐阅读