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

如何在Pandas DataFrame中筛选跨日期重复的Temp记录

解决Pandas中筛选跨日期重复Temp记录的问题

需求说明

需要从DataFrame中筛选出同一Temp值对应多个不同Date的所有记录,排除两类数据:

  • 仅在单个Date内重复的Temp条目(比如示例中的Temp=50,只出现在2023/1/2)
  • 唯一值的Temp(示例中无此类数据)

示例数据

import pandas as pd

df = pd.DataFrame({
    'Date': ['2023/1/1', '2023/1/1', '2023/1/2', '2023/1/2', '2023/1/2'],
    'Hour': ['0600', '1800', '0600', '1200', '1800'],
    'Temp': [40, 40, 40, 50, 50]
})

问题分析

你之前的代码逻辑偏差:df.duplicated(subset=['Date','Temp'], keep=False)会标记所有同一Date+Temp组合下的重复行,取反后只能保留单个Date内唯一的Temp行,完全不符合需求。

正确解决方案

用groupby结合transform计算每个Temp对应的不同Date数量,再筛选出数量≥2的Temp的所有记录,这种方法效率高,适配大数据量:

# 计算每个Temp对应的不同Date数量,广播到每一行
temp_date_count = df.groupby('Temp')['Date'].transform('nunique')

# 筛选出对应多个不同Date的Temp记录
result = df[temp_date_count >= 2]

运行后得到期望结果:

Date  Hour  Temp
0  2023/1/1  0600    40
1  2023/1/1  1800    40
2  2023/1/2  0600    40

原理说明

  • groupby('Temp')['Date'].transform('nunique'):按Temp分组,计算每组内不同Date的数量,再将该数量映射到原DataFrame的每一行,生成和原表长度一致的Series
  • temp_date_count >=2:精准筛选出那些跨多个Date出现的Temp的所有关联记录,完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:17:29