为了账号安全,请及时绑定邮箱和手机立即绑定

从 pandas 的列中删除字符串列表

从 pandas 的列中删除字符串列表

慕娘9325324 2023-10-31 14:11:14
我需要删除字符串列表:list_strings=['describe','include','any']来自 pandas 的专栏:My_Columninclude details about your goaldescribe expected and actual resultsshow some code anywhere我试过df['My_Column']=df['My_Column'].str.replace('|'.join(list_strings), '')但它删除了部分单词。例如:My_Columndetails about your goalexpected and actual resultsshow some code where # here it should be anywhere我的预期输出:My_Columndetails about your goalexpected and actual resultsshow some code anywhere 
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

使用“词边界”\b之类的表达方式。


In [46]: df.My_Column.str.replace(r'\b{}\b'.format('|'.join(list_strings)), '')

Out[46]: 

0         details about your goal

1     expected and actual results

2         show some code anywhere

Name: My_Column, dtype: object


查看完整回答
反对 回复 2023-10-31
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您的问题是pandas看不到单词,它只看到字符列表。因此,当你要求 pandas 删除“any”时,它并不是从描绘单词开始的。所以一种选择是你自己做,也许是这样的:


# Your data

df = pd.DataFrame({'My_Column':

['Include details about your goal',

'Describe expected and actual results',

'Show some code anywhere']})


list_strings=['describe','include','any'] # make sure it's lower case


def remove_words(s):

    if s is not None:

        return ' '.join(x for x in s.split() if x.lower() not in list_strings)


# Apply the function to your column

df.My_Column = df.My_Column.map(remove_words)


查看完整回答
反对 回复 2023-10-31
?
慕神8447489

TA贡献1780条经验 获得超1个赞

方法的第一个参数.str.replace()必须是字符串或编译后的正则表达式;不是像你这样的列表。


你可能想要


list_strings=['Describe','Include','any']            # Note capital D and capital I


for s in [f"\\b{s}\\b" for s in list_strings]:       # surrounded word boundaries (\b) 

    df['My_Column'] = df['My_Column'].str.replace(s, '')

获得


                     My_Column

0      details about your goal

1  expected and actual results

2      Show some code anywhere


查看完整回答
反对 回复 2023-10-31
  • 3 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信