根据日期过滤行

时间:2015-09-03 19:47:14

标签: python python-3.x pandas

我有一组类似于这种格式的数据:

id,timestamp,pid
[(1231, '2015-08-31 15:21:15', 1546),
 (3451, '2015-09-01 15:21:15', 4984),
 (4561, '2015-09-01 15:21:15', 6464),
 (5671, '2015-09-02 15:21:15', 5484)]

我试图提取包含日期" 2015-09-01"的行。我想过要应用一张地图,但如果我理解正确的话,它就可以作为一个整体在那行上运行。

所以我尝试了另一种选择

datetime.strptime(df.timestamp, "%Y-%m-%d %H:%M:%S")

但得到了这个:

TypeError: must be str, not method

最终我想到提取符合这个条件的行:

datetime.strptime("2015-08-30 23:59:59", "%Y-%m-%d %H:%M:%S") > 
               datetime.strptime(df.timestamp, "%Y-%m-%d %H:%M:%S") >
               datetime.strptime("2015-09-02 00:00:00", "%Y-%m-%d %H:%M:%S")

我的问题

实现该方法的更合适的方法是什么,还是有其他替代方法?

1 个答案:

答案 0 :(得分:1)

您可能想要使用filter。由于所有日期都使用-格式化,因此效果很好:

filter(lambda x: '2015-09-01' in x[1], the_list)

结果是:

[(3451, '2015-09-01 15:21:15', 4984), (4561, '2015-09-01 15:21:15', 6464)]

您还可以执行以下操作:

filter(lambda x: '2015-09-01' < x[1], the_list)

给出了:

[(3451, '2015-09-01 15:21:15', 4984), 
 (4561, '2015-09-01 15:21:15', 6464),  
 (5671, '2015-09-02 15:21:15', 5484)]