从含字符串、日期时间的混合文本中提取目标数字(Pandas场景)
数据清洗问题:提取混合字符串中的目标数字
原始数据集
import pandas as pd import numpy as np x = np.array([ '355395.7037', '355369.6383', '355367.881', '355381.419', '357394.9D7a82te7o6fm4o9n4t3h7 print: 06/10/202', '357405.7897626596']) y = np.array([ '4521429.292', '4521430.0229', ' 4521430.1191', '4521430.1256', '3 13:36 4521735.552137422', '4521512.725']) df = pd.DataFrame({'X':x, 'Y':y})
数据特征与提取需求
部分数据为字符串与数字混合形式:
- X列示例:
357394.9D7a82te7o6fm4o9n4t3h7 print: 06/10/202,其中夹杂拆分单词Date of month及日期; - Y列示例:
'3 13:36 4521735.552137422',其中混杂年份数字3(来自2023)和时间13:36。
需要去除无关内容,仅保留目标数字,提取规则如下:
- X列:目标数字整数部分为6位,提取前6位整数,再拼接后续所有连续数字(直到遇到空格或非数字字符),例如从上述X列混合字符串中提取
357394.97827649437; - Y列:目标数字整数部分为7位,从字符串末尾查找小数点,向前取7位整数及后续小数部分。
现有方案的问题
现有处理方案在应对更新后的测试用例时出现错误:
更新后的测试用例
x = np.array([ '355395.7037', '355369.6383', '355367.881', '355381.419', '357394.9D7a82te7o6fm4o9n4t3h7 p', '357405.7897626596']) y = np.array([ '4521429.292', '4521430.0229', '4521430.1191', '4521430.1256', 'rint: 06/10/2023 13:36 4521735.552137422', '4521512.725'])
处理后Y列第5行(索引为4)被错误提取为06102023,而正确的目标数字应为4521735.552137422,需解决该问题。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

