首页 > 解决方案 > 如何替换数据框列中的所有数字(附有字母/符号,即 43$)?

问题描述

我有一个与股市相关的在线评论数据框。这是一个例子:

df = pd.DataFrame({'id': [1, 2, 3], 
                   'comment': ["I made $425",
                               "I got mine at 42c. per share", 
                               "Stocks saw a 12% increase"]})

我想将数据框中的所有数字(包括符号和字母)替换NUMBER为:

"I made NUMBER",
"I got mine at NUMBER per share", 
"Stocks saw a NUMBER increase"

我在之前的评论中找到了一个接近的解决方案,但是这个解决方案仍然给我留下了剩余的字母和符号。

def repl(x):
    return re.sub(r'\d+', lambda m: "NUMBER", x)

repl("I made 428c with a 52% increase")

>> I made NUMBERc with a NUMBER% increase

任何帮助将不胜感激,谢谢。

标签: pythonregexpandas

解决方案


这应该有效:

import re

def repl(x):
    return re.sub(r'\S*\d+\S*', lambda m: "NUMBER", x)

print(repl("I made 428c with a 52% increase"))

输出:

I made NUMBER with a NUMBER increase

推荐阅读