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

基于日期列与其他列统计Pandas DataFrame中指定Series值的数量

嘿,我来帮你搞定这个统计需求!结合你的DataFrame结构,核心就是利用Pandas的分组(groupby)和日期处理能力,来实现基于timestamp和另一列的指定值统计。下面分步骤给你演示几种常见的场景:

第一步:先确保timestamp是日期类型

首先要把timestamp列转换成Pandas的日期时间格式,不然没法按日期分组:

import pandas as pd

# 转换日期列
df['timestamp'] = pd.to_datetime(df['timestamp'])

场景1:按时间周期 + 另一列(比如second_val)统计指定值的数量

比如你想按月份和second_val分组,统计values列中39.0出现的次数:

# 按月份和second_val分组,统计39.0的数量
monthly_39_count = df.groupby(
    [pd.Grouper(key='timestamp', freq='M'), 'second_val']
)['values'].apply(lambda x: (x == 39.0).sum()).reset_index(name='count_of_39')

这里pd.Grouper(freq='M')表示按自然月分组,你可以换成'D'(天)、'W'(周)、'Y'(年)来调整时间粒度。

场景2:按客户ID(cus_id) + 日期分组统计指定值

如果要统计每个客户每天values中0.0出现的次数:

daily_cus_0_count = df.groupby(
    ['cus_id', pd.Grouper(key='timestamp', freq='D')]
)['values'].apply(lambda x: (x == 0.0).sum()).reset_index(name='count_of_0')

场景3:筛选时间范围 + 指定列值,统计多值频次

比如你想统计2010年所有second_val=1的数据中,values各值的出现次数:

# 先筛选符合条件的数据
filtered_data = df[(df['timestamp'].dt.year == 2010) & (df['second_val'] == 1)]
# 统计values的频次分布
value_freq = filtered_data['values'].value_counts().reset_index(name='count')

小提示

  • 如果要统计多个指定值,把x == 39.0换成x.isin([35.0, 39.0])就能统计这些值的总数量
  • 如果你要统计的"指定Pandas Series"不是values,只需要把代码里的'values'替换成对应的列名就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:28:40