Python 筛选数据帧中的特殊字符

Python 筛选数据帧中的特殊字符,python,pandas,dataframe,filter,special-characters,Python,Pandas,Dataframe,Filter,Special Characters,我有一个名为data的数据框: metrics artists 0 0.21 ['Zhané'] 2 0.14 ['Mose Allison'] 3 0.87 ['水柳仙'] 4 0.25 ['Shel Silverstein'] “艺术家”栏的一些记录有特殊字符,我想用具有特殊字符的记录制作另一个df,即以下输出: 数据: 数据2: metrics artists 0 0.21 ['Zhané'

我有一个名为
data
的数据框:

    metrics    artists

0    0.21    ['Zhané']
2    0.14    ['Mose Allison']
3    0.87    ['水柳仙']
4    0.25    ['Shel Silverstein']
“艺术家”栏的一些记录有特殊字符,我想用具有特殊字符的记录制作另一个df,即以下输出:

数据:

数据2:

     metrics    artists

0    0.21    ['Zhané']
1    0.14    ['水柳仙']
使用:

但是我得到了原始的df

我还尝试了:

data2 = []
for x in data['artists']:
    if x is not "[^a-zA-Z0-9 ]":
         data2[x]=data[x]
    print(data2)
但它给了我一个错误:

KeyError: "['Zhané']"
以及:

if x is "[^ a-zA-Z0-9]"
返回空记录

使用:

data2=data.artists[data.artists.str.contains(“[^a-zA-Z0-9]”)

但是我得到了原始的df


您在“[^a-zA-Z0-9]”中缺少一个空格,这就是您获取原始df的原因。在Jupyter笔记本中使用Python3进行测试。

实际上,您当前使用
str.contains
的方法应该有效。请提供输入数据框。请参阅以供参考。你可以回答这个问题。顺便说一句,欢迎来到堆栈溢出!查看,如果你想要更多的提示。你不应该为regex使用re模块吗?我假设你使用的是Pandas,所以我为你添加了标签。如果不正确,您可以修复它。当验证他们是否输入过滤器时,我在寄存器中得到“True”,这就是为什么它会抛出所有原始df
data2=data[data.artists.str.contains(“[^a-zA-Z0-9]”)
这对我有效。我已经用另一个例子试过了,如果它有效,我想我的问题是我的数据是“['Shel Silverstein']”,而不是“Shel Silverstein”,我想我必须先修改记录的格式
KeyError: "['Zhané']"
if x is "[^ a-zA-Z0-9]"