Rya*_*ler 2 python replace pandas
我有一个数据框,其中包含' *Winner*'该人姓名后的几个实例。我想删除这个,这样就只剩下他们的名字了。其简化版本如下:
Data = {'YEAR': [2020, 2020, 2020],\n 'NAME': [ 'Tom *Winner*', 'Dick\xc2\xa0*Winner*', 'Harry *Winner*']}\ndf = pd.DataFrame(Data)\ndf['NAME'] = df['NAME'].str.replace(' [*]Winner[*]', '')\ndf\nRun Code Online (Sandbox Code Playgroud)\n结果是这样的:
\n YEAR NAME\n0 2020 Tom\n1 2020 Dick *Winner*\n2 2020 Harry\nRun Code Online (Sandbox Code Playgroud)\n' *Winner*'所以我的问题是迪克的标签与其他两个标签有什么不同?为什么这个不被删除?有更好的方法来实现这一点吗?
作为一个额外令人困惑的说明,我只是复制了上面的代码并重新运行它(假设这就是这里的人们可能测试它的方式),它确实删除了迪克的' *Winner*'标签。因此,我的原始数据的某些内容有所不同,并且在粘贴到此处时被删除。在这种情况下,不知道如何帮助重现它。
编辑:根据@user17242583的请求,这是结果df.to_dict()
{'NAME': {0: 'Tom *Winner*', 1: 'Dick\\xa0*Winner*', 2: 'Harry *Winner*'},\n 'YEAR': {0: 2020, 1: 2020, 2: 2020}}\nRun Code Online (Sandbox Code Playgroud)\n
小智 5
尝试这个:
df['NAME'] = df['NAME'].str.replace('\s*\*Winner\*', '', regex=True)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> df
YEAR NAME
0 2020 Tom
1 2020 Dick
2 2020 Harry
Run Code Online (Sandbox Code Playgroud)
有效的原因是因为您的数据有一个\xa0,这是一个薄的、不间断的空间。在您的原始代码中,您有一个空格硬编码,但我的代码使用\s*这意味着“0个或多个任何空白字符”,其中包括\xa0(字符代码160)。
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |