gpt4 book ai didi

python - Pandas .str.replace 不替换表中的所有实例

转载 作者:行者123 更新时间:2023-12-02 01:51:38 25 4
gpt4 key购买 nike

我有一个数据框,在该人的名字后面有多个' *Winner*' 实例。我想删除这个,这样就只剩下他们的名字了。其简化版本如下:

Data = {'YEAR': [2020, 2020, 2020],
'NAME': [ 'Tom *Winner*', 'Dick *Winner*', 'Harry *Winner*']}
df = pd.DataFrame(Data)
df['NAME'] = df['NAME'].str.replace(' [*]Winner[*]', '')
df

结果如下:

    YEAR    NAME
0 2020 Tom
1 2020 Dick *Winner*
2 2020 Harry

所以我的问题是 Dick 的 ' *Winner*' 标签与其他两个标签有何不同?为什么这个不被删除?有没有更好的方法来实现这一点?

作为一个额外令人困惑的注释,我只是复制了上面的代码并重新运行它(假设这就是这里的人们可能测试它的方式),并且它确实删除了 Dick 的 ' *Winner*' 标签。因此,我的原始数据的某些内容有所不同,并且在粘贴到此处时被删除。在这种情况下,不知道如何帮助重现它。

编辑:根据@user17242583的请求,这是df.to_dict()

的结果
{'NAME': {0: 'Tom *Winner*', 1: 'Dick\xa0*Winner*', 2: 'Harry *Winner*'},
'YEAR': {0: 2020, 1: 2020, 2: 2020}}

最佳答案

试试这个:

df['NAME'] = df['NAME'].str.replace('\s*\*Winner\*', '', regex=True)

输出:

>>> df
YEAR NAME
0 2020 Tom
1 2020 Dick
2 2020 Harry

有效的原因是您的数据有一个 \xa0,即 thin, non-breaking space 。在您的原始代码中,您有一个硬编码的空格,但我的代码使用 \s* 这意味着“0个或多个任何空白字符”,其中包括 \xa0 (char代码 160)。

关于python - Pandas .str.replace 不替换表中的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70236649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com