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

如何在Pandas DataFrame中筛选时间计数一致的MarketName组

Pandas处理MarketName数据过滤方案

步骤分解

  • 按MarketName分组,提取每组的最早和最晚Date/Time
  • 对每个分组,分别统计最早时间、最晚时间对应的行数
  • 筛选出最早时间行数与最晚时间行数相等的MarketName
  • 保留这些符合条件的MarketName的所有行

代码实现

import pandas as pd

# 先把Date/Time列转为datetime类型(如果原本不是的话)
df['Date/Time'] = pd.to_datetime(df['Date/Time'])

# 定义函数,统计每组最早、最晚时间的行数
def check_time_counts(group):
    min_time = group['Date/Time'].min()
    max_time = group['Date/Time'].max()
    count_min = len(group[group['Date/Time'] == min_time])
    count_max = len(group[group['Date/Time'] == max_time])
    return pd.Series([count_min, count_max], index=['count_min', 'count_max'])

# 按MarketName分组计算行数
market_counts = df.groupby('MarketName').apply(check_time_counts)

# 筛选出符合条件的MarketName
valid_markets = market_counts[market_counts['count_min'] == market_counts['count_max']].index

# 过滤得到最终结果
filtered_df = df[df['MarketName'].isin(valid_markets)]

补充说明

  • 如果你的Date/Time列原本就是datetime格式,可以跳过第一步的类型转换
  • 替换代码里的df为你实际使用的DataFrame变量名
  • 可以先执行print(market_counts)查看每个MarketName的行数统计结果,验证逻辑是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:57:26