Python 检查pandas.Timestamp是否在pandas.Period中
伪:myPeriod.contains(myTimestamp)Python 检查pandas.Timestamp是否在pandas.Period中,python,pandas,timestamp,period,Python,Pandas,Timestamp,Period,伪:myPeriod.contains(myTimestamp) 我发现熊猫身上缺少这种功能是相当令人惊讶的。我在这里遗漏了什么吗?您可以使用开始时间和结束时间访问时段的边界,因此时间是否在时段内的表达式为 myPeriod.start_time < myTimestamp < myPeriod.end_time myPeriod.start\u时间
我发现熊猫身上缺少这种功能是相当令人惊讶的。我在这里遗漏了什么吗?您可以使用
开始时间
和结束时间
访问时段的边界,因此时间是否在时段内的表达式为
myPeriod.start_time < myTimestamp < myPeriod.end_time
myPeriod.start\u时间
如果有多个值,可以尝试:
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]
如果您只想比较一个日期时间
,使用起来更简单(谢谢):
或使用系列
:
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]
谢谢,但我希望有更简洁的东西,考虑到这是python,我们在python之上使用pandas。在我看来,这是相当简洁和python式的,大多数语言不会让你像这样组合一个双不等式哦,很好,我不知道(双不等式的事情)在python中是可能的,我以为那是一个伪代码。谢谢。谢谢你这么及时的回复,我知道我错过了什么。但既然我们在这里,我还有一个问题:我如何让自己意识到“isin”的存在?它不在熊猫的网页“时间序列/日期功能”中,你可以在这里找到它,它不是关于
isin
,你答案的实质是将时间戳转换为一个周期并检查是否相等,真正发生的是表达式myTimestamp.to\u period(myPeriod.freqstr)==myPeriod
如果脱离索引的上下文操作,我将只使用您先前的:myPeriod.start_timeprint 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]