检查pandas.Timestamp是否在pandas.Period中

时间:2016-03-07 21:50:54

标签: python pandas timestamp period

pseudo:myPeriod.contains(myTimestamp)

我发现大熊猫缺乏这种功能是非常令人惊讶的。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:6)

您可以使用start_timeend_time访问句点的边界,因此,时间是否在句点内的表达式将是

myPeriod.start_time < myTimestamp < myPeriod.end_time

答案 1 :(得分:3)

如果您有多个值,可以尝试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]