如何统计DataFrame中两列值相同的行数?
统计DataFrame中两列取值相同的行数
嘿,这个需求太常见了,我给你几个简单高效的方法,分分钟搞定!
方法一:直接对比求和(最直观)
最直接的思路就是逐行对比a和b列的取值,生成一个布尔型Series,然后用sum()统计其中True的数量(毕竟计算时True会被当作1,False当作0)。
代码示例:
import pandas as pd # 假设你的DataFrame是df count = (df['a'] == df['b']).sum() print(f"两列取值相同的行数:{count}")
方法二:用eq()方法(链式调用更顺手)
Pandas的Series自带eq()方法,功能和==完全一致,如果你习惯链式调用代码,这个写法会更顺畅:
count = df['a'].eq(df['b']).sum()
效果和方法一一模一样,选你看着顺眼的就行~
方法三:先筛选再计数(方便查看符合条件的行)
如果你不仅要计数,还想看看哪些行符合条件,那可以先过滤出目标行,再统计行数:
# 筛选出a和b取值相同的行 matching_rows = df[df['a'] == df['b']] # 用len()统计行数 count = len(matching_rows) # 或者用shape[0],效果一样 count = matching_rows.shape[0]
这样你还能保留matching_rows这个DataFrame,后续想查看或处理这些行都很方便。
注意点:处理缺失值(NaN)
如果你的数据里有NaN,要注意NaN不等于任何值,包括它自己,所以上面的方法会把两列都是NaN的行排除在外。如果需要把这种情况也统计进去,可以这么写:
# 统计「值相等」或者「两者都是NaN」的行数 count = ((df['a'] == df['b']) | (df['a'].isna() & df['b'].isna())).sum()
这个细节很重要,别漏了哦!
内容的提问来源于stack exchange,提问作者user9605051
相关产品推荐
相关产品推荐

