【发布时间】:2019-01-09 12:57:49
【问题描述】:
我正在使用一个 pandas 数据框,其中一列中包含非数值。有没有一种方法可以只替换字符,同时保留列中的数字。我对应用正则表达式模式来清理数据和非常感谢有人能指出我正确的正则表达式模式。
最终输出必须是 [0-9].[0-9] 类型的单个数字浮点数,但也会有不遵循这些标准的值,我需要找到这些数字然后缩放它们.
例如:
Col A
'7.8.',
'5..3',
'%3.2',
' ',
'3.*8',
'3.8*',
'140',
'14.5 of HGB',
'>14.5',
'<14.5',
'14,5'
'14. 5'
预期输出:
Col A
'7.8',
'5.3',
'3.2',
'0',
'3.8',
'3.8',
'140',
'14.5',
'14.5',
'14.5',
'14.5',
'14.5'
附:目的是只提取数字,然后将其转换为浮点数,以便我可以对其进行一些计算。
谢谢,
阿卜杜勒
【问题讨论】:
-
您的预期输出是什么?
3.*8应该是3.8和5..3应该是5.3吗?? -
1.2.3呢?变成123、12.3、1.23...? -
建议的第一步:替换所有不是数字或句点的内容,然后从那里开始。
unallowed = re.compile(r'[^\d\.]'),然后是s.str.replace(unallowed, '') -
@RafaelC 如果是这种情况,那么我只需要第一个出现的点并将其用作值。 1.2.3 然后转换为 1.2 忽略 .3
-
@ALollz 是的,预期输出的格式必须为 [0-9].[0-9],所有特殊字符均已删除。3.*8 必须为 3.8 和 5.. 3 必须是 5.3。如果它的值像 140,那么我只需要保持原样并将其转换为浮点数,以便我以后可以缩放它。
标签: python regex pandas dataframe