python - 从 Python 中的多个列中删除非中文元素
问题描述
我正在努力从以下数据帧中删除字母 ( ) 、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
我该如何改进代码?谢谢。
解决方案
你可以使用下一个正则表达式它只收集汉字:
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]+', ''))
推荐阅读
- python - 在 PyQt5 Python 中使用 QPropertyAnimation 处理二维数组
- javascript - 单击多个 setInterval 时,jQuery ClearInterval 不起作用
- javascript - 如何处理映射对象并更改内部值的重复代码
- node.js - 如何使用 express .node 、 mongoose 和 ejs 删除对象
- flutter - Dart 中类型注释的尖括号在 VSCode 中更改为每个主题的不正确颜色
- java - 在android中单击返回按钮时应用程序崩溃
- flutter - 如何显示 base64 图像
- python - 你能帮我为特定行插入背景颜色吗?
- r - 有没有办法在 dyplr/tidyverse 命令上启用语法突出显示?
- kubernetes - 如何启用警报管理器从新的 kubernetes 命名空间中选择警报管理器配置?