首页 > 解决方案 > 用列中的混合字符替换特定字符串

问题描述

我有一个数据框 df,我想在其中删除特定字符串并替换为 'None' 我想删除巴西(新)字符串。

数据

col1    col2
5   
5       Brazil (New)
none    2
na      none

期望的

col1    col2
5   
5       none
none    2
na      none
    

正在做

print(string.replace("Brazil (New)", "none"))

但是,这不会维护数据集的其余部分。我还在研究。任何建议表示赞赏。

标签: pythonpandasnumpy

解决方案


尝试DataFrame.mask根据它等于给定字符串的位置替换值:

df = df.mask(df.eq('Brazil (New)'), 'none')

df

   col1  col2
0     5   NaN
1     5  none
2  none     2
3    na  none

也可以指定和覆盖特定列:

cols = ['col2']
df[cols] = df[cols].mask(df.eq('Brazil (New)'), 'none')
   col1  col2
0     5   NaN
1     5  none
2  none     2
3    na  none

解释:

df.eq('Brazil (New)')
    col1   col2
0  False  False
1  False   True
2  False  False
3  False  False

然后用指定的值替换它在哪里True,在这种情况下用none.

   col1  col2
0     5   NaN
1     5  none
2  none     2
3    na  none

使用的数据框:

import numpy as np
import pandas as pd

df = pd.DataFrame({'col1': {0: '5', 1: '5', 2: 'none', 3: 'na'},
                   'col2': {0: np.nan, 1: 'Brazil (New)', 2: '2', 3: 'none'}})

推荐阅读