2015-04-14 108 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

謝謝接受... –