datetime - 按日期对Pandas DataFrame进行分组

标签 datetime python-2.7 group-by pandas

我有一个包含date列的Pandas DataFrame。该列的元素类型为pandas.tslib.Timestamp

我想按日期对数据帧进行分组,但要排除该日期更精细的时间戳信息(即按日期分组,将所有Feb 23, 2011分组)。我知道如何用SQL来表达这一点,但对Pandas来说还很陌生。

This question的功能非常相似,但是我不理解该代码,它使用了datetime对象。

documentation,我什至不了解如何从Pandas Timestamp对象中检索日期。我可以将其转换为datetime对象,但这似乎非常round回。

根据要求,df.head()的输出:

    date    show    network timed   session_id
0   2011-12-03 02:48:52  Monk    TV38    670     00003DA9-01D2-E7A9-4177-203BE6A9E2BA    
1   2011-12-03 03:00:09  WBZ News    TV38    205     00003DA9-01D2-E7A9-4177-203BE6A9E2BA
2   2011-12-03 03:04:04  Dateline NBC    NBC     30  00003DA9-01D2-E7A9-4177-203BE6A9E2BA
3   2011-12-03 03:04:35  20/20   ABC     25  00003DA9-01D2-E7A9-4177-203BE6A9E2BA
4   2011-12-03 03:04:56  College Football    FOX     55  00003DA9-01D2-E7A9-4177-203BE6A9E2BA

最佳答案

您可以使用normalize DatetimeIndex方法(将其带到当天的午夜):

In [11]: df['date']
Out[11]: 
0   2011-12-03 02:48:52
1   2011-12-03 03:00:09
2   2011-12-03 03:04:04
3   2011-12-03 03:04:35
4   2011-12-03 03:04:56
Name: date, dtype: datetime64[ns]

In [12]: pd.DatetimeIndex(df['date']).normalize()
Out[12]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2011-12-03 00:00:00, ..., 2011-12-03 00:00:00]
Length: 5, Freq: None, Timezone: None

您可以按以下方式分组:
g = df.groupby(pd.DatetimeIndex(df['date']).normalize())

在0.15中,您可以访问dt属性,因此可以这样写:
g = df.groupby(df['date'].dt.normalize())

关于datetime - 按日期对Pandas DataFrame进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126668/

相关文章:

Python - 如何从 RSS 提要获取时区

PHP 日期格式精度

mysql - SQL GROUP BY - 一列中有多个结果?

c# - 选择每组属性值最大的记录

windows - 如何保护软件免受系统日期时间更改的影响?

python - Pandas :如何在毫秒间使用 between_time?

Python psycopg2 游标

python - PyCharm 类型提示不适用于重载运算符

python - 使用一维 bool 数组进行 Numpy 索引

mysql - 如果每个值出现在 MYSQL 的组中,如何为每个值返回 'true/false'?