2016-03-07 51 views

回答

2

你可以嘗試isin,如果你有多個值:

print df.index 
PeriodIndex(['2015-11'], dtype='int64', name=u'', freq='M') 

d = "2015-09-01" 
d1 = "2015-10-01" 
print df.index.isin([pd.to_datetime(d).to_period('M'), pd.to_datetime(d1).to_period('M')]) 
[False] 

d = "2015-11-01" 
d1 = "2015-11-01" 
print df.index.isin([pd.to_datetime(d).to_period('M'), pd.to_datetime(d1).to_period('M')]) 
[ True] 

如果你想比較只有一個datetime,更容易在使用(感謝maxymoo):

d = "2015-09-01"  
print df.index == pd.to_datetime(d).to_period('M') 
[False] 

d = "2015-11-01"  
print df.index == pd.to_datetime(d).to_period('M') 
[True] 

或者與Series

print df.a 
0 2015-11 
Name: a, dtype: object 

d = "2015-09-01" 
d1 = "2015-10-01" 
print df.a.isin([pd.to_datetime(d).to_period('M'), pd.to_datetime(d1).to_period('M')]).values 
[False] 

d = "2015-11-01" 
d1 = "2015-11-01" 
print df.a.isin([pd.to_datetime(d).to_period('M'), pd.to_datetime(d1).to_period('M')]).values 
[ True] 
+0

謝謝你的回覆,我知道我錯過了一些東西。但是,既然我們在這裏,我還有一個問題:我如何讓自己意識到「isin」的存在?它不在熊貓網頁「時間序列/日期功能」 – YunliuStorage

+0

您可以在[索引和選擇數據]中找到它(http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-with- isin) – jezrael

+0

這不是關於'isin',你的答案的本質是將時間戳轉換爲一個週期並檢查是否相等,正在執行的是表達式myTimestamp.to_period(myPeriod.freqstr)== myPeriod' – maxymoo

3

您可以start_timeend_time,因此一時間是否是一個週期內的表達訪問期間的邊界將是

myPeriod.start_time < myTimestamp < myPeriod.end_time 
+0

謝謝你,但是我預期的事情更簡潔,考慮到這是蟒蛇,我們正在使用Python之上大熊貓。 – YunliuStorage

+1

在我看來,這是相當簡潔和pythonic,大多數語言不會讓你結合這樣的雙重不平等 – maxymoo

+0

哦,很好,我不知道(雙重不平等的東西)是可能的Python中,我認爲這是一個僞碼。謝謝。 – YunliuStorage