python - 如何更改 pandas 列中数字的格式?

标签 python regex python-3.x pandas

我有一个很大的数字 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/

相关文章:

python - 在 Tkinter (Python) 中创建一个根据分数改变大小的圆圈

Python 和正则表达式

java - 在java中按字符拆分字符串

regex - 是否有提供正则表达式静态分析的库?

python - 带有交错起始变量的python中的嵌套for循环

python - asyncio.as_completed 如何工作

python - 圆形阵列上的滚动窗口

python - Tkinter标签删除时的Python OpenCV输出

python - 如何根据 Pandas 的条件合并按时间顺序排列的连续行?

python - 为什么不对我的所有列表运行此循环?