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

为何Pandas处理3万行数据集时,按Name筛选重复项失效?

问题描述

按Name列分组,保留该列值出现多次的记录。以下代码在3列6行的小数据集上运行正常,但处理30列3万行的数据集时,仅选取Name、Email、IBAN三列执行相同代码,却无法过滤掉仅出现一次的行,求原因及解决办法。

代码示例
import pandas as pd
data={'Name':['Danny','Damny','Monny','Quony','Dimny','Danny'],
      'Email':['danny@gmail.com','danny@gmail.com','monny@gmail.com','quony@gmail.com','danny@gmail.com','danny@gmail.com'],
     'IBAN':['NLAMRO123456789','NLINGB126656723','BGFFEO128856754','NLAMRO123896763','DUDMRO567456722','NLRABO123456712']} #data with three columns
df=pd.DataFrame(data) #creation of dataframe
df['No Dutch Bank']=None #creation of extra column for analysis
df.loc[df['IBAN'].str.find('NL') == -1, 'No Dutch Bank']='ja'# to find rows, which contain non dutch bank numbers.
df_filt=df[['Name',"Email", "IBAN"]]#filtering columns needed in the final results
df_gb = df_filt[df_filt.duplicated(subset=['Name'], keep=False)].sort_values(by='Name', ascending=False).reset_index(drop=True)#filtering on a required column
piv_tab = pd.pivot_table(df_gb, index=['Name',"Email", "IBAN"])#applying pivot table
piv_tab
原因分析与解决方案

核心原因

小数据集能正常运行,大数据集失效,大概率是**Name列存在隐性的字符串差异**,而这种差异在小数据里不存在:

  • 字符串首尾有隐藏空格:比如有的行是'Danny',有的是'Danny '(末尾多空格),Pandas会判定这是两个不同的值,不会标记为重复
  • 大小写不一致:比如'Danny'和'danny'被视为不同值,导致无法被duplicated识别为重复项
  • 存在缺失值:如果Name列有单个NaN,duplicated不会将其标记为重复行,会被保留下来

解决办法

1. 先清洗Name列的字符串

先统一处理Name列的格式,消除隐性差异:

# 去除首尾空格
df_filt['Name'] = df_filt['Name'].str.strip()
# 统一转为小写(或者大写,保持一致即可)
df_filt['Name'] = df_filt['Name'].str.lower()

2. 替换过滤逻辑(更稳定的方式)

用value_counts统计每个Name的出现次数,再筛选出现次数>1的记录,这种方法比duplicated更直观,也能避免隐性问题:

# 统计每个Name的出现次数
name_counts = df_filt['Name'].value_counts()
# 筛选出出现多次的Name
repeated_names = name_counts[name_counts > 1].index
# 过滤数据集
df_gb = df_filt[df_filt['Name'].isin(repeated_names)].sort_values(by='Name', ascending=False).reset_index(drop=True)

3. 处理缺失值(如果有)

先检查Name列的缺失情况,再决定是否删除:

# 查看缺失值数量
print(df_filt['Name'].isna().sum())
# 删除Name列为空的行
df_filt = df_filt.dropna(subset=['Name'])

内容的提问来源于stack exchange,提问作者Rohit Nirmal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:25:24