如何在Pandas DataFrame中修剪空格与字符串并保留正确浮点数值?——extract方法导致数值失真的问题求助
解决Pandas DataFrame中pH列提取浮点数值的问题
你的问题出在正则表达式的匹配规则上:(\d+)只能匹配连续的整数部分,所以对于6.80000 SIAc这样的字符串,它只会提取出6,自然就丢失了小数部分,导致原有数值被改变。下面给你两种更合适的解决方案:
方案一:调整正则表达式匹配完整的浮点数
修改正则规则,让它能匹配包含小数点的完整数值:
samplework['pH'] = samplework['pH'].str.extract(r'(\d+\.\d+)', expand=False).astype(float)
如果你的数据里还可能出现整数形式的pH值(比如7 SIAc),可以用更通用的正则,同时兼容整数和小数:
samplework['pH'] = samplework['pH'].str.extract(r'(\d+\.?\d*)', expand=False).astype(float)
方案二:利用空格分割字符串取第一个元素
因为你的数值和后面的文本是用空格分隔的,直接按空格分割后取第一个元素会更简单直观:
samplework['pH'] = samplework['pH'].str.split().str[0].astype(float)
这个方法不需要写正则,代码可读性更强,特别适合这种固定的空格分隔场景。
两种方法都能帮你得到想要的结果:pH列只保留6.80000、8.00000这类浮点数值。
内容的提问来源于stack exchange,提问作者Jagruti
相关产品推荐
相关产品推荐

