让我们考虑一个 DataFrame,其中包含 2010 年 1 月每一天的 1 行 2 个值:
date_range = pd.date_range(dt(2010,1,1), dt(2010,1,31), freq='1D')
df = pd.DataFrame(data = np.random.rand(len(date_range),2), index = date_range)
我想使用Period Period('2009-12-28/2010-01-03', 'W-SUN')
创建一个 bool 索引器,该索引器将返回一个包含以下内容的DataFrame仅从那个时期开始。如何创建这样的 bool 索引器? - 理想情况下无需将周期转换为日期时间范围。
最佳答案
设查询pd.Period
对象为:
query = pd.Period('2009-12-28/2010-01-03', 'W-SUN')
您可以通过访问其 start_time
和 end_time
属性,通过以下方式直接执行此操作:
1) 使用DF.truncate
:
df.truncate(query.start_time, query.end_time)
2)使用 bool 索引器:
df[(df.index >= query.start_time) & (df.index <= query.end_time)]
3) 使用日期时间索引,默认情况下包括两个端点:
df[query.start_time:query.end_time]
所有这些产品
关于 python 、 Pandas : Boolean Indexing Comparing DateTimeIndex to Period,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41676020/