2017-04-06 53 views
3

我有一個簡單的系列:第一個值是不可搜索的

>>> sub_dim_metrics 
date 
2017-04-04 00:00:00+00:00  32.38 
2017-04-03 00:00:00+00:00 246.28 
2017-04-02 00:00:00+00:00 146.25 
2017-04-01 00:00:00+00:00 201.98 
2017-03-31 00:00:00+00:00 274.74 
2017-03-30 00:00:00+00:00 257.82 
2017-03-29 00:00:00+00:00 279.38 
2017-03-28 00:00:00+00:00 203.53 
2017-03-27 00:00:00+00:00 250.65 
2017-03-26 00:00:00+00:00 180.59 
2017-03-25 00:00:00+00:00 196.61 
2017-03-24 00:00:00+00:00 281.04 
2017-03-23 00:00:00+00:00 276.44 
2017-03-22 00:00:00+00:00 227.55 
2017-03-21 00:00:00+00:00 267.59 
Name: area, dtype: float64 
>>> sub_dim_metrics.index 
DatetimeIndex(['2017-04-04', '2017-04-03', '2017-04-02', '2017-04-01', 
       '2017-03-31', '2017-03-30', '2017-03-29', '2017-03-28', 
       '2017-03-27', '2017-03-26', '2017-03-25', '2017-03-24', 
       '2017-03-23', '2017-03-22', '2017-03-21'], 
       dtype='datetime64[ns, UTC]', name=u'date', freq=None) 

在我的代碼後來,我檢索使用以下格式特定日期的區域:sub_dim_metrics['2017-04-02'],例如。

之前,我檢索某一天區,我首先驗證指定的日期的系列,像這樣:if '2017-04-02' in sub_dim_metrics.index

我的問題是,在指數的第一個值沒有返回true,而休息做:

>>> '2017-04-02' in sub_dim_metrics.index 
True 
>>> '2017-04-04' in sub_dim_metrics.index 
False 

爲什麼這和什麼是最好的方式來驗證日期是在我的系列之前檢索其相應的值?

+0

您可以使用s.get_value(),並檢查是否返回爲空。當找不到密鑰時,get_value()不會引發異常。我使用get_value而不是索引標籤。 –

回答

3

IIUC:

你得到False當你想到True
你正在檢查一個字符串是否是一個日期時間指數。顯然pandas與檢查鬆動,並試圖爲你做。這是錯誤的,不是嗎?

計劃1
這樣做的權利!

pd.to_datetime('2017-04-04') in sub_dim_metrics.index 

True 

計劃2
我覺得無序岬是扔它關閉。首先是sort_values

'2017-04-04' in sub_dim_metrics.index.sort_values() 

True 

設置

from io import StringIO 
import pandas as pd 

txt = """2017-04-04 00:00:00+00:00  32.38 
2017-04-03 00:00:00+00:00 246.28 
2017-04-02 00:00:00+00:00 146.25 
2017-04-01 00:00:00+00:00 201.98 
2017-03-31 00:00:00+00:00 274.74 
2017-03-30 00:00:00+00:00 257.82 
2017-03-29 00:00:00+00:00 279.38 
2017-03-28 00:00:00+00:00 203.53 
2017-03-27 00:00:00+00:00 250.65 
2017-03-26 00:00:00+00:00 180.59 
2017-03-25 00:00:00+00:00 196.61 
2017-03-24 00:00:00+00:00 281.04 
2017-03-23 00:00:00+00:00 276.44 
2017-03-22 00:00:00+00:00 227.55 
2017-03-21 00:00:00+00:00 267.59""" 

sub_dim_metrics = pd.read_csv(StringIO(txt), 
    sep='\s{2,}', engine='python', 
    index_col=0, parse_dates=[0], 
    header=None, names=['date', 'area'], 
    squeeze=True) 
1
len(s.get_value('2017-04-02)) == 0 
    False 

鑰匙存在。

len(s.get_value('2015-01-01)) == 0 
    True 

該鍵不存在。

相關問題