如何在Python Pandas DataFrame中筛选出行数为6条的客户数据
Pandas筛选拥有6条记录的客户方法
你之前用df['Customer No'].value_counts() == 6没成功,是因为这个操作返回的是一个以客户ID为索引的布尔Series,没法直接匹配原DataFrame的行索引来筛选。给你几个实用的解决方法:
方法一:用groupby+filter(最直观)
直接按客户ID分组,筛选出分组长度等于6的所有行:filtered_df = df.groupby('Customer No').filter(lambda x: len(x) == 6)这个方法会自动保留符合条件客户的所有原始数据,一步到位。
方法二:先获取有效客户ID再筛选
先提取出记录数为6的客户ID列表,再用这个列表过滤原DataFrame:# 获取符合条件的客户ID valid_ids = df['Customer No'].value_counts()[lambda x: x == 6].index # 筛选数据 filtered_df = df[df['Customer No'].isin(valid_ids)]方法三:用transform添加计数列
给每行添加对应客户的总记录数,再筛选计数为6的行:# 添加临时计数列 df['record_count'] = df.groupby('Customer No')['Customer No'].transform('count') # 筛选并删除临时列 filtered_df = df[df['record_count'] == 6].drop('record_count', axis=1)
这三种方法都能达到你的需求,其中方法一最简洁,适合刚接触Pandas的新手使用。
内容的提问来源于stack exchange,提问作者STcoder
相关产品推荐
相关产品推荐

