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

Python Pandas统计特定值占比时如何排除NaN空单元格不参与计数

解决pandas统计占比时无法排除NaN行的问题

在pandas中NaN和空字符串""是两种完全独立的空值类型,你之前的判断逻辑只排除了空字符串,没有覆盖NaN的场景,直接调用np.isnan()对pandas Series操作也会出现不生效的问题,应该使用pandas内置的.notna()方法判断值是否非空。

修正后的代码如下:

import pandas as pd

df2 = pd.DataFrame(supplier_data_df, columns=['supplier keywords', 'supplier in ocr']) 

# 同时排除NaN和空字符串的有效行
total_suppliers = df2[(df2["supplier in ocr"].notna()) & (df2["supplier in ocr"] != "") 
                      & (df2["supplier keywords"].notna()) & (df2["supplier keywords"] != "")] 

# 此处注意需要先正确定义supplier_filtered_df,筛选出包含你要统计的特定值的行,筛选时也建议加上.notna()避免误匹配
# 示例:supplier_filtered_df = total_suppliers[total_suppliers['对应列名'] == '你要统计的特定值']

percentilesupplierkeyword = len(supplier_filtered_df)/len(total_suppliers) * 100 

print(percentilesupplierkeyword,"% of supplier-keywords have an issue")

如果你不需要保留排除空字符串的逻辑,只需要排除NaN的话,可以直接用.dropna()方法简化写法:

# 直接删除两列中任意一列包含NaN的行
total_suppliers = df2.dropna(subset=['supplier keywords', 'supplier in ocr'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 14:36:00