我使用Python和pandas,并且有一个DataFrame列 包含字符串的。我希望将浮点数保留在字符串中,并去掉浮点(字符串)末尾的“-.”。在
到目前为止,我一直在使用下面的正则表达式来去除原始字符串中的字符和方括号,但它将字符串非数字部分中的“-”和“.”保留在原位。在
输入字符串示例:
14,513.045Non-compliant with installation req.
当我试图修改它时,我得到的是:
14,513.045- .
(正数字符串示例)
我还希望能够解析负数,例如:
-234.670
字符串中的第一个-
表示负浮点数。我想保留第一个-
和第一个.
,但是去掉后面的那些不属于这个数字的那些。在
这是我尝试使用的代码来实现这一点:
dataframe3['single_chainage2'] = dataframe3['single_chainage'].str.replace(r"[a-zA-Z*()]",'')
但我只剩下{
我看不到单独使用pandas来完成上述操作的方法,并认为regex是推荐的方法。在
您不需要
replace
,我想您可以使用Series.str.extract
来获得所需的字符串。在regex模式中需要一个命名组(在本例中是
num
)。在如果需要将其转换为数字数据类型:
^{pr2}$不要删除不需要的字符,只需指定一个要查找并提取的模式。它应该不容易出错。 要提取可以是浮点的正数和负数:
测试以上代码:
^{pr2}$在这个解决方案中,您不希望执行replace,而只需指定regex匹配的值。在
我把它分成3行来告诉你它是如何逻辑地进行的。希望这是有道理的。在
您应该将
<YOUR_STRING>
的值替换为数据的字符串表示形式。至于如何从Pandas数据帧中获取字符串值,this question可能有一些答案。我不确定你的数据帧实际上是什么样子,但我想像df['single_chainage'][0]
这样的东西应该可以工作。基本上,如果你在Pandas中建立索引,它会返回一些Pandas特定的信息,如果你只想检索字符串本身,你必须显式地指定它。在相关问题 更多 >
编程相关推荐