从带有熊猫的日期时间列中选择行

时间:2020-09-25 17:19:19

标签: pandas datetime slice

我有一个包含许多列的数据框,其中一列(接收时间)已正确转换为日期时间

id   receivedtime   
1    2020-09-08 00:35:12  
2    2020-09-09 06:16:09  
3    2020-09-10 12:47:04
4    2020-09-08 15:57:05

,依此类推。我只想选择给定日期的那些(这类似于此帖子:subsets from a datetime column,但对我没有帮助)。我尝试做一个简单的子贴标:

df[df["receivedtime"]=="2020-09-10"] 

但是我得到了一个空的数据框。我相信这与小时和分秒有关。显然,一种方法是从日期时间中删除该信息,但我想保留整个结构。我什至尝试使用dt.datetime,但似乎没有任何效果。这里有什么问题?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

这是因为您的receivedtime并不总是很短的日期,即时间等于00:00:00。尝试使用dt.normalize()来获取时间戳中的日期:

 df[df["receivedtime"].dt.normalize()=="2020-09-10"] 

输出:

   id        receivedtime
2   3 2020-09-10 12:47:04

答案 1 :(得分:1)

您可以尝试通过以下方法将日期时间转换为日期

df[pd.to_datetime(df["receivedtime"]).dt.strftime('%Y-%m-%d')=="2020-09-10"]

答案 2 :(得分:1)

首先通过在空白处分割日期来创建“新”数据框

new = df["receivedtime"].str.split(" ", expand = True)
new

输出

             0        1
0    2020-09-08 00:35:12  
1    2020-09-09 06:16:09  
2    2020-09-10 12:47:04  
3    2020-09-08 15:57:05  

然后使用布尔蒙版

df[new[0]=="2020-09-08"]

输出:

    receivedtime
0   2020-09-08 00:35:12
3   2020-09-08 15:57:05

您将获得带日期的所有日期