要清理数据集,我需要在最后一个数字之后拆分一个字符串。知道吗?
我的数据文件:
data = {'addr':[
"510 -1, Cleveland St",
"RC-20-5345 Poplar Street",
"3600 Race Avenue Richardson"]}
df = pd.DataFrame(data)
addr
_____________________________________
510 -1, Cleveland St
RC-20-5345 Poplar Street
3600 Race Avenue Richardson我试着用这个表达式,但是我错过了第二行的楼层编号(RC)。
df["split1"] = df["addr"].str.extract(r"(\d+[-\ ]+\d*)")
split1 | split2
___________|_________________________
510 -1 | , Cleveland St
20-5345 | Poplar Street
3600 | Race Avenue Richardson我想要的东西:
split1 | split2
___________|_________________________
510 -1 | , Cleveland St
RC-20-5345 | Poplar Street
3600 | Race Avenue Richardson发布于 2022-05-24 22:56:34
def splitByLastDigit(x):
lastDigit=0
splitOne=""
splitTwo=""
finalArray=[]
for i in range(0,len(x)):
if x[i].isdigit() and i > lastDigit:
lastDigit=i
for i in range(0,len(x)):
if i <= lastDigit:
splitOne+=x[i]
else:
splitTwo+=x[i]
if len(splitTwo.strip()) == 1 and splitTwo.strip().isalpha():
return [splitOne+splitTwo]
finalArray.append(splitOne)
finalArray.append(splitTwo)
return finalArray把这个解决方案写下来了。它有点粗糙(当然可以做得更优雅),但是用您提供的三个示例进行了测试,并完成了工作。
很简单的主意。收集最后一个数字的索引,然后另一个循环检查该索引之前和之后的字符。最后,向它追加一个数组并返回最终结果。
发布于 2022-05-24 22:46:01
在正则表达式的前面添加一个通配符匹配怎么样?
df["split1"] = df["addr"].str.extract(r"(.*\d+[-\ ]+\d*)")发布于 2022-05-24 23:02:25
为了得到zyd的答案,捕获另一组中的其余部分
data = {'addr':[
"510 -1, Cleveland St",
"RC-20-5345 Poplar Street",
"3600 Race Avenue Richardson"]}
df = pd.DataFrame(data)
df[['split1','split2']] = df["addr"].str.extract(r"(.*\d+[-\ ]+\d*)(.+)") addr split1 split2
0 510 -1, Cleveland St 510 -1 , Cleveland St
1 RC-20-5345 Poplar Street RC-20-5345 Poplar Street
2 3600 Race Avenue Richardson 3600 Race Avenue Richardsonhttps://stackoverflow.com/questions/72370167
复制相似问题