我有一个时间序列hourly_df
,其中包含一些每小时的数据:
import pandas as pd
import numpy as np
hourly_index = pd.date_range(start='2018-01-01', end='2018-01-07', freq='H')
hourly_data = np.random.rand(hourly_index.shape[0])
hourly_df = pd.DataFrame(hourly_data, index=hourly_index)
并且我有一个DatetimeIndex,其中包含一些日期(如我希望的天数),例如
daily_index = pd.to_datetime(['2018-01-01', '2018-01-05', '2018-01-06'])
我想选择hourly_df
的每一行,其索引的日期在daily_index
中,因此,在我的情况下,所有1月1日,5月6日和6月6日的每小时数据。最好的方法是什么?
如果我天真地使用hourly_df.loc[daily_index]
,则在三天内的每一天我只会在0:00:00获得行。我想要的是daily_index
中每天中每一天的小时数据。
解决此问题的一种可能性是,创建一个过滤器,该过滤器获取hourly_df
索引中每个元素的日期,并比较该日期是否在daily_index
中。
day_filter = [hour.date() in daily_index.date for hour in hourly_df.index]
hourly_df[day_filter]
这将产生所需的输出,但是似乎可以避免使用过滤器,并且可以在类似于hourly_df.loc[daily_index.date]
的表达式中完成过滤器。
答案 0 :(得分:1)
every_facet_data = subset(Theoph, Subject == 1)
individual_facet_data = subset(Theoph, Subject != 1)
individual_facet_data$facet = individual_facet_data$Subject
every_facet_data = merge(every_facet_data,
data.frame(Subject = 1, facet = unique(individual_facet_data$facet)))
plot_data = rbind(every_facet_data, individual_facet_data)
library(ggplot2)
ggplot(plot_data, aes(x=Time, y=conc, colour=Subject)) +
geom_line() +
geom_point() +
facet_wrap(~ facet)
保存为daily_index
dataframe