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

如何在Pandas DataFrame中按日期统计关键词出现频次?

Pandas按天统计关键词出现次数的解决方法

嘿,刚接触Pandas的话确实容易在分组聚合这里卡壳,我来帮你搞定这个按天统计关键词次数的问题~

首先,先还原你的示例DataFrame,方便我们一起测试:

import pandas as pd

# 构建示例数据
data = {
    'keyword': ['cat', 'dog', 'cat', 'cat', 'elephant'],
    'id': [0, 1, 2, 3, 4]
}
# 创建datetime64类型的索引
datetime_index = pd.to_datetime([
    '2017-03-31 21:22:33+00:00',
    '2017-07-07 11:28:36+00:00',
    '2017-03-31 01:18:50+00:00',
    '2017-03-31 21:03:39+00:00',
    '2017-08-23 13:26:43+00:00'
])
df = pd.DataFrame(data, index=datetime_index)

为什么你之前的方法没得到想要的格式?

你用的df.resample('D').keyword.value_counts()其实已经统计出了正确的数据,但它返回的是一个多级索引的Series,不是你想要的扁平化DataFrame格式,只需要多一步处理就能得到目标结果。

两种可行的解决方法

方法一:用groupby + pd.Grouper(更直观)

直接按天和关键词分组,然后统计每组的数量:

# 按天分组(freq='D'代表天),同时按keyword分组,统计每组大小
result = df.groupby([pd.Grouper(freq='D'), 'keyword']).size().reset_index(name='count')

方法二:改进你原来的resample方法

在你原来的代码基础上,加上reset_index()把多级索引转成普通列:

# 先按天重采样,统计每个天组内的关键词次数,再重置索引
result = df.resample('D').keyword.value_counts().reset_index(name='count')

最终结果

运行上面任意一种方法后,打印result就能得到你想要的格式:

date    keyword  count
0 2017-03-31        cat      3
1 2017-07-07        dog      1
2 2017-08-23  elephant      1

小提示

如果你的DataFrame索引还不是datetime64类型,记得先转换:

df.index = pd.to_datetime(df.index)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:31