Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式将数字中的句点(小数点)替换为大熊猫中的逗号_Python_Regex_Pandas - Fatal编程技术网

Python 使用正则表达式将数字中的句点(小数点)替换为大熊猫中的逗号

Python 使用正则表达式将数字中的句点(小数点)替换为大熊猫中的逗号,python,regex,pandas,Python,Regex,Pandas,我正在使用Python和Pandas尝试用逗号替换列中数字的所有小数点,因此我当前的尝试是: s = pandas.Series([234.00,423.00,536.56]) s.replace(to_replace="[^0-9]*\.[0-9]*$",value=r"\,",regex=True) 但是它不起作用,而且我不太擅长正则表达式,期望的输出是: new series 234,00 423,00 536,56 这里有几件事需要注意- 您在一列float上调用replac

我正在使用Python和Pandas尝试用逗号替换列中数字的所有小数点,因此我当前的尝试是:

s = pandas.Series([234.00,423.00,536.56])
s.replace(to_replace="[^0-9]*\.[0-9]*$",value=r"\,",regex=True)
但是它不起作用,而且我不太擅长正则表达式,期望的输出是:

new series
234,00
423,00
536,56    

这里有几件事需要注意-

  • 您在一列float上调用replace,执行需要字符串的正则表达式替换
  • 您的正则表达式不正确,您应该使用lookarounds,并且不应该执行
    [^0-9]
    ,因为
    ^
    在字符类中执行求反操作(将查找任何非数字的内容)
  • 我会先转换成字符串。您需要保留后面的小数,
    str.format
    将对您有所帮助。然后,调用
    str.replace

    s.apply('{:.2f}'.format).str.replace('\.', ',')
    
    0    234,00
    1    423,00
    2    536,56
    dtype: object 
    

    请记住,以这种格式保存数据实际上在计算上没有任何用途。

    s.astype(str).str.replace(“\.”,“,”)
    ?您知道这将使它们成为字符串,因此您无法再使用它们进行操作,对吗?您的正则表达式不正确<代码>[^0-9]将匹配任何非数字的内容。此外,请注意,
    replace
    甚至不起作用,因为您正在对一列浮点数调用replace(replace正在查找字符串)。