如何编写Pandas函数统计DataFrame各列中4的数量及其占比?
解决方案:统计DataFrame列中数值4的占比
核心实现(高效向量化操作)
不需要逐列循环,直接用Pandas的向量化特性就能批量计算每列中数值为4的元素占比:
# 计算整个DataFrame每列的4值占比 four_ratio = (df == 4).mean()
原理:df == 4会生成一个布尔值DataFrame,其中等于4的位置为True(等价于1),其余为False(等价于0);.mean()方法会对每列求平均值,即4的元素数量除以该列总元素数,直接得到占比小数。
针对特定列的计算
如果只需要统计包含指定关键词(比如ColumnA)的列,可先筛选列再计算:
# 筛选包含"ColumnA"的列 target_cols = df.columns[df.columns.str.contains('ColumnA')] # 计算目标列的4值占比 target_ratio = (df[target_cols] == 4).mean()
修正原代码问题
你原代码中df[cols] = ...的写法会把目标列的所有元素替换成占比数值,这是错误的。正确做法是单独存储占比结果(比如上述的four_ratio或target_ratio),而非修改原DataFrame的列数据。
内容的提问来源于stack exchange,提问作者obi
相关产品推荐
相关产品推荐

