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

如何在Pandas DataFrame中筛选并仅展示指定对比列值不同的行

解决方案:筛选并仅展示指定列的差异行

其实这个需求很容易实现,核心就是先筛选出Name和Displ_name不相等的行,再明确指定只保留这两列就行啦!给你几种实用的方法:

方法一:高效的列直接对比(推荐)

这种方法比apply或者np.where更简洁高效,尤其适合你的数据集:

# 生成布尔掩码:标记两行值不等的行
mask = df_full["Name"] != df_full["Displ_name"]
# 筛选行并仅保留Name和Displ_name列
diff_rows = df_full.loc[mask, ["Name", "Displ_name"]]

如果想让结果的索引更整洁(避免原DataFrame的索引混乱),可以加上重置索引的操作:

diff_rows = df_full.loc[mask, ["Name", "Displ_name"]].reset_index(drop=True)

方法二:优化你原来的apply写法

如果你习惯用apply,只需要在筛选之后加上列选择即可:

diff_rows = df_full[df_full.apply(lambda x: x["Name"] != x["Displ_name"], axis=1)][["Name", "Displ_name"]]

不过要注意,apply在处理大型数据集时效率会比直接列对比低一些,所以更推荐第一种方法。

方法三:基于你已有的np.where结果

如果你已经用np.where生成了布尔列表,也可以直接用它来筛选:

comparison_column = np.where((df_full["Name"] == df_full["Displ_name"]), True, False)
# 取反得到不等的行,再选择指定列
diff_rows = df_full.loc[~comparison_column, ["Name", "Displ_name"]]

这里的~是取反操作,把原来的True(相等)转换成False,False(不等)转换成True,刚好符合我们的筛选需求。

内容的提问来源于stack exchange,提问作者Elena Dobrovskiy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:52:44