如何对比pandas DataFrame两个不同列的行级值并生成布尔列表
pandas两列行级相等对比方案
直接使用pandas逐元素相等运算符==即可得到每行的对比结果,返回值为布尔类型的Series,完全适配后续真假占比统计、饼图绘制的需求:
# 行级逐元素对比,每个位置的取值对应当前行两列是否相等 compare_res = df['toss_winner'] == df['winner']
适配饼图绘制的扩展操作
得到布尔Series后,可以直接调用value_counts()统计两类结果的数量,直接用于绘图:
# 统计True和False的出现次数 count_res = compare_res.value_counts() # 快速绘制饼图示例 count_res.plot( kind='pie', autopct='%1.1f%%', labels=['抛硬币获胜方即比赛获胜方', '抛硬币获胜方未赢得比赛'] )
你之前使用的
equals()方法作用是判断两个Series整体是否完全一致,仅返回单个布尔值,因此无法输出行级对比结果。
如果两列存在缺失值(NaN),直接使用==会在对应行返回NaN,可通过eq方法指定缺失值匹配规则:# 示例:将两列的空值都填充为同一个占位符后再对比,缺失值视为相等 compare_res = df['toss_winner'].eq(df['winner'], fill_value='__empty__')
内容的提问来源于stack exchange,提问作者sukhi
相关产品推荐
相关产品推荐

