如何用Pandas统计DataFrame列中仅含空字符串的单元格数量?
解决DataFrame中统计仅空字符串单元格的问题
嘿,我来帮你搞定这个问题!你之前用的df['currency'].str.contains(r'\s*')之所以会误判,是因为\s*这个正则表示零个或多个空白字符——正常的非空字符串(比如'USD')里虽然没有空白,但“零个空白”也是符合这个正则的,所以contains会认为所有单元格都匹配,这就导致了误识别。
要准确统计仅含空字符串(或仅空白字符)的单元格,分两种情况处理:
1. 严格匹配仅空字符串''
如果你要找的是完全等于空字符串的单元格,直接用等于判断就最直观高效:
empty_count = (df['currency'] == '').sum()
2. 匹配仅空白字符(包括空字符串)
如果你的数据里存在全是空格、制表符这类空白的单元格,也想把它们统计进来,可以用str.fullmatch()配合正则r'^\s*$'——这个正则表示“从开头到结尾,只有零个或多个空白字符”,而fullmatch会要求整个字符串完全匹配正则(和contains的“部分匹配”本质不同):
blank_count = df['currency'].str.fullmatch(r'^\s*$').sum()
举个实际例子
假设你的DataFrame是这样的:
import pandas as pd df = pd.DataFrame({ 'currency': ['USD', 'EUR', '', 'ILS', ' ', 'HKD'] })
- 用第一种方法统计空字符串:
(df['currency'] == '').sum()→ 结果是1(只有第三个单元格是空字符串) - 用第二种方法统计所有空白类单元格:
df['currency'].str.fullmatch(r'^\s*$').sum()→ 结果是2(第三个和第五个全空格的单元格)
这样就能精准统计你需要的单元格数量啦!
内容的提问来源于stack exchange,提问作者daiyue
相关产品推荐
相关产品推荐

