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

如何用Pandas筛选出包含指定Type数组所有元素的日期数据?

筛选包含指定所有Type元素的日期数据

核心需求

从给定的DataFrame中,仅保留那些日期对应的Type列包含[3,4,5]所有元素的行,最终结果只保留2024-03-12和2024-03-13的记录。

实现步骤

由于原DataFrame的Date列存在格式不统一(如2024-03-11和2024-3-11),首先需要统一日期格式,避免分组时误判为不同日期;再通过分组筛选出符合条件的日期,最后过滤原数据。

完整代码

import pandas as pd

# 构造原DataFrame
data = {
    'Date': ['2024-03-11', '2024-3-11', '2024-03-12', '2024-3-12', '2024-3-12',
             '2024-03-13', '2024-3-13', '2024-3-13', '2024-3-14'],
    'Type': [3, 4, 3, 4, 5, 3, 4, 5, 5],
    'Value': [3, 5, 3, 5, 5, 3, 5, 2, 5]
}
df = pd.DataFrame(data)

# 1. 统一日期格式(转成标准日期对象,消除格式差异)
df['Date'] = pd.to_datetime(df['Date']).dt.date

# 2. 定义目标Type集合
target_types = {3, 4, 5}

# 3. 分组筛选:找出包含所有目标Type的日期
valid_dates = df.groupby('Date')['Type']\
                .apply(lambda group: target_types.issubset(group))\
                .loc[lambda x: x].index

# 4. 过滤原DataFrame,得到结果
result_df = df[df['Date'].isin(valid_dates)]
print(result_df)

代码说明

  1. 统一日期格式:用pd.to_datetime将日期转成datetime类型后提取date对象,确保不同格式的同日期被识别为同一分组键。
  2. 分组检查:通过groupby('Date')按日期分组,用issubset方法判断该日期的Type是否包含所有目标值(集合操作比计数更直接准确,无需考虑重复值)。
  3. 过滤数据:用筛选出的有效日期,通过isin方法过滤原DataFrame,得到最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:53:29