df.replace('Number', 'NewWord', regex=True)
如何用NewWord替换Number
或number
或NUMBER
答案 0 :(得分:3)
只需在case=False
中使用str.replace
。
示例:
df = pd.DataFrame({'col':['this is a Number', 'and another NuMBer', 'number']})
>>> df
col
0 this is a Number
1 and another NuMBer
2 number
df['col'] = df['col'].str.replace('Number', 'NewWord', case=False)
>>> df
col
0 this is a NewWord
1 and another NewWord
2 NewWord
[编辑] :如果要查找多列,则可以选择具有object
dtypes的所有列,然后将上述解决方案应用于它们。示例:
>>> df
col col2 col3
0 this is a Number numbernumbernumber 1
1 and another NuMBer x 2
2 number y 3
str_columns = df.select_dtypes('object').columns
df[str_columns] = (df[str_columns]
.apply(lambda x: x.str.replace('Number', 'NewWord', case=False)))
>>> df
col col2 col3
0 this is a NewWord NewWordNewWordNewWord 1
1 and another NewWord x 2
2 NewWord y 3
答案 1 :(得分:3)
粗鲁。仅当整个字符串为'Number'
或'NUMBER'
时,此方法才有效。它不会替换较大字符串中的那些。当然,它仅限于这两个词。
df.replace(['Number', 'NUMBER'], 'NewWord')
更多蛮力乐队
如果还不够明显的话,这远远不如@coldspeed的答案
import re
df.applymap(lambda x: re.sub('number', 'NewWord', x, flags=re.IGNORECASE))
或者从@coldspeed的答案中得到提示
df.applymap(lambda x: re.sub('(?i)number', 'NewWord', x))
答案 2 :(得分:2)
与使用i
flag使用标准正则表达式相同。
df = df.replace('(?i)Number', 'NewWord', regex=True)
当然,df.replace
是有限制的,标志必须作为正则表达式字符串的一部分(而不是标志)传递。如果使用的是str.replace
,则可以使用case=False
或flags=re.IGNORECASE
。
答案 3 :(得分:0)
如果您要转换的文本位于数据框的特定列中,则此解决方案将起作用:
df['COL_n'] = df['COL_n'].str.lower()
df['COL_n'] = df['COL_n'].replace('number', 'NewWord', regex=True)