2015-04-14 68 views
3

我想找到一种方法来检查item_date是否包含今天的日期。但即使我硬编码,打印真的永远不会发生。任何人都知道如何解决此问题?pandas.tslib.Timestamp日期匹配

for item_date in buy_crossing_dates: 
    print item_date 
    print type(item_date) 
    if item_date == '2015-03-25 00:00:00': 
     print 'True' 

结果:

2015-03-25 00:00:00 
<class 'pandas.tslib.Timestamp'> 
+0

你能告诉我们你的数据实际上是什么样子吗?还有原始输入数据和代码来重现这个问题,在这里很难猜测这里没有代码来重现问题,你也在比较一个时间戳和一个字符串,为什么你期望这个工作? – EdChum

+0

我是一个Python新手,所以不知道我在做什么:)无论如何,我怎么能显示原始输入数据给你? –

+0

即使在print(item_date)时,解释器也会打印“2015-03-25 00:00:00”,但并不意味着item_date的值是2015-03-25 00:00: 00'。打印的内容只是“item_date”的字符串表示形式。你没有正确比较你的数据。 – Bonifacio2

回答

4

用于检查今天的时间戳的熊猫系列日期有两个选项...

import pandas as pd 

# option 1 - compare using python datetime.date objects 
dates = pd.Series(pd.date_range('2015-01-01', '2016-12-31')) # Timestamps 
python_dates = pd.Series([x.date() for x in dates])   # datetime.date 
today = pd.Timestamp('now').date()       # datetime.date 
print(python_dates[python_dates == today]) 

# option 2 - compare pandas.Timestamp objects using Series.dt accessor 
dates = pd.Series(pd.date_range('2015-01-01', '2016-12-31')) # Timestamps 
today = pd.Timestamp('now')         # Timestamp 
print(dates[(dates.dt.year == today.year) & 
    (dates.dt.month == today.month) & 
    (dates.dt.day == today.day)]) 

注:选择一个使用列表中理解到转换熊猫系列时间戳记到一系列datetime.date对象(使用pandas.Timestamp.date()方法)。

+0

我可以知道如何将pd.Timestamp('现在')更改为特定日期以测试我的脚本?最终会改用现在,但我需要测试脚本是否正在工作。 –

+0

请不要介意,得到它:today_date = pandas.Timestamp( '2015年3月25日') 为item_date在buy_crossing_dates: 打印item_date 打印类型(item_date) 如果item_date == today_date: 打印 '真' –

+0

谢谢接受... –