替换列中的字符串时,会在每个字符周围添加替换字符串。
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)
但我想了解为什么字符串替换不起作用
str.replace 适用于字符串中该模式的所有出现,而不仅仅是当字符串与整个模式匹配时。字符串中的所有字符(以及开头和结尾)之间存在
''
,所有字符都会被替换为“N/A”。另一方面,您的代码 df.context == ''
确保只有空字符串才会被替换