如何更改“熊猫”列中数字的格式?

时间:2019-06-06 21:07:34

标签: python regex python-3.x pandas

我有一个很大的数字数据框,但是每个数字都采用不同的格式。我想使用正则表达式以111-111-1111格式替换大量的

numbers["numbers"].replace('^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$, "/*/*/*-/*/*/*-/*/*/*/*", regex=True')

应该使用表达式找到的数字,并保留基数,但更改其格式。 1234567890应该等于123-456-7890

1 个答案:

答案 0 :(得分:0)

您可以使用

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组:四位数
  • $-字符串的结尾。

替换模式(\x中的r'\1-\2-\3'是用相应组捕获的值的占位符。