我正在努力删除字母(a-z and A-Z
),数字和标点符号,并只留下以下数据帧的v1
到v3
的中文字符。
id v1 v2 v3
0 1 泥岗路 红岗花园12栋110房 NaN
1 2 沙井街道 万丰路 东侧
2 3 中心区 N15区 幸福·海岸10栋A座11A
3 4 龙岗镇 南联村 长海雅园2栋D301D302房产
4 5 蛇口工业区 兴华路 海滨花园多层海滨花园兰山楼06栋504房产
5 6 宝安路 松园·南九巷综合楼10栋103 NaN
6 7 宝安路 松园·南九巷综合楼10栋203 NaN
7 8 龙岗镇 中心城 尚景华园12栋307房
8 9 沙河西路 西博海名苑1栋30C房产 NaN
9 10 华侨城香山中路 天鹅堡三期P栋4D房 NaN
10 11 布吉镇 德福花园德福豪苑C4栋C5栋C4座1403房 NaN
我试过的代码可以工作,但它留下了一些标点符号:
cols = ['v1', 'v2', 'v3']
df[cols] = df[cols].apply(lambda x: x.str.replace(r'[\x00-\x7F]+', ''))
输出:
v1 v2 v3
0 泥岗路 红岗花园栋房 NaN
1 沙井街道 万丰路 东侧
2 中心区 区 幸福·海岸栋座
3 龙岗镇 南联村 长海雅园栋房产
4 蛇口工业区 兴华路 海滨花园多层海滨花园兰山楼栋房产
5 宝安路 松园·南九巷综合楼栋 NaN
6 宝安路 松园·南九巷综合楼栋 NaN
7 龙岗镇 中心城 尚景华园栋房
8 沙河西路 西博海名苑栋房产 NaN
9 华侨城香山中路 天鹅堡三期栋房 NaN
10 布吉镇 德福花园德福豪苑栋栋座房 NaN
我该如何改进代码呢?谢谢。
发布于 2020-02-13 15:44:44
您可以使用next regexp it只收集中文字符:
cols = ['v1', 'v2', 'v3']
df[cols] = df[cols].apply(lambda x: x.str.replace(r'[^\u4e00-\u9FFF]+', ''))
如果你想保留空白,你可以添加\s
cols = ['v1', 'v2', 'v3']
df[cols] = df[cols].apply(lambda x: x.str.replace(r'[^\u4e00-\u9FFF\s]+', ''))
https://stackoverflow.com/questions/60202641
复制相似问题