在Pandas中比较多列与指定参考列并计算匹配值的百分比占比
Pandas多列匹配百分比最简实现
核心简化逻辑:Pandas中布尔值默认对应数值1(True)和0(False),直接调用mean()方法即可得到匹配项的占比,无需额外创建临时列、做类型转换或手动计数。
单个列对比写法
你原来的单样本对比可以直接简化为一行代码:
# 直接得到sample1和core的匹配百分比 (df['core'] == df['sample1']).mean() * 100
多列批量对比写法
如果要一次性计算所有待对比样本列的匹配占比,可直接批量操作:
import pandas as pd # 构造示例数据集 df = pd.DataFrame({ 'core': [1, 1], 'sample1': [0, 1], 'sample2': [4, 2] }) # 指定要对比的列,也可以用df.filter(like='sample').columns动态匹配所有sample开头的列 compare_cols = ['sample1', 'sample2'] # 批量计算匹配百分比 match_result = df[compare_cols].eq(df['core'], axis=0).mean() * 100 print(match_result)
运行输出结果如下:
sample1 50.0 sample2 0.0 dtype: float64
如果需要保留整数百分比,可以在末尾加.round(0).astype(int)调整输出格式。
内容的提问来源于stack exchange,提问作者Jim Jones
相关产品推荐
相关产品推荐

