如何提取不同Party存在共有日期的Pandas DataFrame行
问题原因
你原来使用的代码df.loc[df['Date & Time'].dt.date.duplicated(keep=False)]仅判断了日期是否重复出现,没有区分重复的日期是否属于不同Party,因此会保留同一个Party下同一日期的多条记录,不符合跨Party共有日期的筛选要求。
正确实现思路
我们需要筛选出至少被2个不同Party使用的日期,再取出这些日期对应的全部行:
- 第一步:从datetime字段中提取纯日期维度
- 第二步:按日期分组,统计每个日期对应的唯一Party数量,保留唯一Party数量≥2的日期
- 第三步:从原表中过滤出属于上述日期的所有行
完整代码示例
# 新增临时列存储纯日期(忽略时间) df['date_only'] = df['Date & Time'].dt.date # 筛选出跨Party共有的日期 shared_dates = df.groupby('date_only')['Party'].nunique()[lambda x: x >= 2].index # 过滤得到符合要求的结果,可按需删除临时辅助列 result = df[df['date_only'].isin(shared_dates)].drop(columns='date_only')
无临时列简化版本
如果不想新增辅助列,可以直接合并逻辑:
result = df[df['Date & Time'].dt.date.map( df.groupby(df['Date & Time'].dt.date)['Party'].nunique() >= 2 )]
内容的提问来源于stack exchange,提问作者Zulqarnain Sabir
相关产品推荐
相关产品推荐

