让我们考虑一个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)
和另一个具有稀疏数据和重复索引值的时间序列:
observations = pd.DataFrame(data =np.random.rand(7,2), index = (dt(2010,1,12),
dt(2010,1,18), dt(2010,1,20), dt(2010,1,20), dt(2010,1,22), dt(2010,1,22),dt(2010,1,28)))
我将第一个DataFrame df
拆分为5个DataFrame列表,每个DataFrame包含来自原始数据的1周值数据:df_weeks = [g for n, g in df.groupby(pd.TimeGrouper('W'))]
现在我想将第二个DataFrame的数据拆分相同的5周。也就是说,这意味着在那个特定情况下,结尾的变量obs_weeks包含5个与df_weeks相同时间范围的DataFrame,其中2个是空的。
我尝试使用reindex
,例如:Python, Pandas: Use the GroupBy.groups description to apply it to another grouping
和期间:
p1 =[x.to_period() for x in list(df.groupby(pd.TimeGrouper('W')).groups.keys())]
p1 = sorted(p1)
dfs=[]
for p in p1:
dff = observations.truncate(p.start_time, p.end_time)
dfs.append(dff)
(见这个问题:Python, Pandas: Boolean Indexing Comparing DateTimeIndex to Period)
问题在于,如果observations
索引中的某些值是重复的(并且是这种情况),则这些方法函数都不是。我还尝试将observations
的索引更改为正常列并对该列进行切片,但我也收到了错误消息。
答案 0 :(得分:1)
您可以通过一个简单的过滤器来实现这一目标:
y