我有一个很大的数字 DataFrame,但每个单独的数字都遵循不同的格式。我想使用正则表达式将其中大量替换为 111-111-1111 格式
numbers["numbers"].replace('^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$, "/*/*/*-/*/*/*-/*/*/*/*", regex=True')
它应该采用表达式找到的数字并保留基数但更改其格式。 1234567890 应等于 123-456-7890
最佳答案
您可以使用
df["numbers"] = df["numbers"].str.replace('^(?:\+\d{1,2}\s)?\(?(\d{3})\)?[\s.-]?(\d{3})[\s.-]?(\d{4})$', r'\1-\2-\3')
详细信息
^
- 字符串开头(?:\+\d{1,2}\s)?
- 可选序列\(?
- 可选的(
(\d{3})
- 第 1 组:三位数字\)?
- 可选的)
[\s.-]?
- 可选空格、.
或-
(\d{3})
- 第 2 组:三位数字[\s.-]?
- 可选空格、.
或-
(\d{4})
- 第 3 组:四位数字$
- 字符串结尾。
替换模式 (r'\1-\2-\3'
) 中的 \x
是对应组捕获的值的占位符。
关于python - 如何更改 pandas 列中数字的格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485097/