给出如下的数据帧:
id name
0 1 个体户
1 2 个人
2 3 利他润己企业管理有限公司
3 4 博通国际投资有限公司
4 5 西潼·科技有限公司
5 6 度咪科技有限公司
如何统计name
列中每一行的中文字数?
预期结果将如下所示:
id name count
0 1 个体户 3
1 2 个人 2
2 3 利他润己企业管理有限公司 12
3 4 博通国际投资有限公司 10
4 5 西潼科技有限公司 8
5 6 度咪科技有限公司 8
发布于 2020-12-28 17:37:58
您可以将str.count
与正则表达式模式一起使用来完成此操作:
df['count'] = df['name'].str.count(pat='[\u4e00-\u9fff]')
结果:
id name count
0 1 个体户 3
1 2 个人 2
2 3 利他润己企业管理有限公司 12
3 4 博通国际投资有限公司 10
4 5 西潼·科技有限公司 8
5 6 度咪科技有限公司 8
发布于 2020-12-28 17:17:37
以下代码可以工作,但如果您能分享其他可能的解决方案,我们将不胜感激。
def hans_count(str):
hans_total = 0
for s in str:
if '\u4e00' <= s <= '\u9fef':
hans_total += 1
return hans_total
df['count'] = df['name'].apply(hans_count)
df
输出:
id name count
0 1 个体户 3
1 2 个人 2
2 3 利他润己企业管理有限公司 12
3 4 博通国际投资有限公司 10
4 5 西潼科技有限公司 8
5 6 度咪科技有限公司 8
https://stackoverflow.com/questions/65475326
复制相似问题