pandas 替换空字符串

问题描述 投票:0回答:1

替换列中的字符串时,会在每个字符周围添加替换字符串。

import pandas as pd, numpy as np
import pandas as pd, numpy as np
data1 = [['symbol',  'context'],
         ['AAA'  ,   'ctx1'],
         ['AAA'  ,   '']]

df = pd.DataFrame(data1)
df = pd.DataFrame(data1[1:], columns=data1[0])
df['context'] = df['context'].str.replace('', 'N/A')
df

这会导致:

    symbol  context
0   AAA     N/AcN/AtN/AxN/A1N/A
1   AAA     N/A

为什么会出现这种情况?

使用以下内容似乎效果很好:

df.context = np.where(df.context == '', 'N/A', df.context)

但我想了解为什么字符串替换不起作用

python pandas
1个回答
0
投票

str.replace 适用于字符串中该模式的所有出现,而不仅仅是当字符串与整个模式匹配时。字符串中的所有字符(以及开头和结尾)之间存在

''
,所有字符都会被替换为“N/A”。另一方面,您的代码
df.context == ''
确保只有空字符串才会被替换

© www.soinside.com 2019 - 2024. All rights reserved.