You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python统计DataFrame中txt列含中文的行数?

统计DataFrame中包含中文的行数解决方案

我来帮你搞定这个问题!你之前只检测“汉”字的方法确实有很大局限性——中文有几千个常用字,只盯一个字肯定会漏掉大量符合条件的行。另外你提到的langdetect报错,根源是列里可能存在非字符串类型的数据,先把类型统一转对就能解决啦。下面给你两种实用的解决方案:

方法一:用正则表达式快速匹配中文字符(推荐,高效适配大数据)

中文字符的Unicode范围是\u4e00-\u9fa5,我们可以借助pandas的str.contains直接匹配这个范围,一步到位统计行数,处理10000行数据速度超快:

import pandas as pd

# 读取CSV文件到DataFrame
df = pd.read_csv("annotation_sample.csv")

# 先确保'txt'列是字符串类型,避免类型报错
df['txt'] = df['txt'].astype(str)

# 统计包含至少一个中文字符的行数
chinese_row_count = df['txt'].str.contains('[\u4e00-\u9fa5]').sum()

print(f"包含中文的行数:{chinese_row_count}")

这个方法的优势是速度快、准确率高,只要文本里存在任何中文字符都会被检测到,完美解决你之前只检测“汉”字的局限性问题。

方法二:修复langdetect的使用(适合需要判断文本语言的场景)

如果你确实想用langdetect来判断文本是否为中文,只需要先把列统一转成字符串,再处理检测时的异常情况(比如空文本、纯符号这类无法识别语言的内容):

from langdetect import detect, LangDetectException
import pandas as pd

df = pd.read_csv("annotation_sample.csv")
# 统一转成字符串类型
df['txt'] = df['txt'].astype(str)

def check_chinese(text):
    try:
        # 检测语言是否为中文(可根据需求添加繁体'zh-tw')
        return detect(text) == 'zh-cn'
    except LangDetectException:
        # 处理无法检测的情况,返回False
        return False

# 应用函数并统计符合条件的行数
chinese_row_count = df['txt'].apply(check_chinese).sum()

print(f"包含中文的行数:{chinese_row_count}")

不过要注意,langdetect对短文本的判断可能不够准确,而且处理速度比正则慢一些。如果你的需求只是判断文本中是否存在中文字符,方法一完全够用啦。

内容的提问来源于stack exchange,提问作者box

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:59:25