如何从pandas的列中移除列表中的字符串[英] How to remove strings present in a list from a column in pandas

本文是小编为大家收集整理的关于如何从pandas的列中移除列表中的字符串的处理方法,想解了如何从pandas的列中移除列表中的字符串的问题怎么解决?如何从pandas的列中移除列表中的字符串问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个数据框 df,

import pandas as pd

df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "name": [
            "Hello Kitty",
            "Hello Puppy",
            "It is an Helloexample",
            "for stackoverflow",
            "Hello World",
        ],
    }
)

看起来像:

   ID               name
0   1        Hello Kitty
1   2        Hello Puppy
2   3   It is an Helloexample
3   4  for stackoverflow
4   5        Hello World

我有一个字符串列表To_remove_list

To_remove_lst = ["Hello", "for", "an", "It"]

我需要从 df 的 name 列中删除列表中存在的所有字符串.我如何在熊猫中做到这一点?

我的预期答案是:

   ID               name
0   1              Kitty
1   2              Puppy
2   3              is example
3   4              stackoverflow
4   5              World
解决方案

我觉得需要str.replace 如果还想删除子字符串:

df['name'] = df['name'].str.replace('|'.join(To_remove_lst), '')

如果可能的话,一些正则表达式字符:

import re
df['name'] = df['name'].str.replace('|'.join(map(re.escape, To_remove_lst)), '')

print (df)
   ID            name
0   1           Kitty
1   2           Puppy
2   3     is  example
3   4   stackoverflow
4   5           World

但如果只想删除单词,请使用嵌套列表理解:

df['name'] = [' '.join([y for y in x.split() if y not in To_remove_lst]) for x in df['name']]

本文地址:https://www.itbaoku.cn/post/1728064.html