首页 > 解决方案 > 如何按日期时间列中的单个日期对熊猫数据框列进行子集化?

问题描述

所以我认为这应该是一个更简单的任务,但我找不到它。我有一个熊猫数据框如下

Company Id      DateTime               col1  col2       col3    col4   col5     col6
0   25502921    2018-08-16 10:23:36     0   175.000     0.0     0.0     0.0     0
1   25502921    2018-08-16 10:33:55     0   155.557     0.0     0.0     0.0     0
2   25502921    2018-08-16 10:43:55     0   153.615     0.0     0.0     0.0     0

type(df['DateTime'][0])输出pandas._libs.tslibs.timestamps.Timestamp

如何根据日期对数据框进行子集化?

df_tmp = df[df['DateTime'].dt.date=='16-08-2018']似乎不起作用df_tmp = df[df['DateTime']=='16-08-2018']

我可以尝试哪些其他直观的方法?

标签: python-3.xpandasdatetimetimestampsubset

解决方案


使用.dt.normalize()它将时间转换为00:00:00但返回一个日期时间对象。

df['DateTime'].dt.normalize().apply(type)
pandas._libs.tslibs.timestamps.Timestamp

print(df['DateTime'].dt.normalize())

0   2018-08-16
1   2018-08-16
2   2018-08-16
Name: DateTime, dtype: datetime64[ns]

df[df['DateTime'].dt.normalize() == '2018-08-16']

   Company_Id            DateTime  col1     col2  col3  col4  col5  col6
0    25502921 2018-08-16 10:23:36     0  175.000   0.0   0.0   0.0     0
1    25502921 2018-08-16 10:33:55     0  155.557   0.0   0.0   0.0     0
2    25502921 2018-08-16 10:43:55     0  153.615   0.0   0.0   0.0     0

推荐阅读