我有一个Pandas数据框,其中包含每隔数百天的每项测量结果。有数千种物品。
我正在使用下面的代码从所有项目中提取所需的时间间隔,并创建一个被截断的数据的数据框。我只想包含采样与整个开始到结束时间段重叠的项目(在开始或结束时间开始,在结束时间或结束时间结束)。
代码效率低下且速度慢,我认为有一种更有效的矢量化方法来实现此目的?
数据框:
name day data
152 MAC000118 2012-12-01 0.1
153 MAC000118 2012-12-02 0.15
...
256 MAC000119 2012-12-01 0.05
...
100000 MAC090000 2014-12-01 0.1
代码:
start_date=datetime.datetime(year=2013,month=1,day=1)
end_date=datetime.datetime(year=2013,month=9,day=1)
macs = df['name']
mac_df_list = []
for i, mac in enumerate(macs):
mac_df = df.loc[df['name'] == mac]
mac_start = mac_df['day'].min()
mac_end = mac_df['day'].max()
if mac_start<=start_date and mac_end>=end_date:
n_month_df = mac_df[(mac_df["day"]>=start_date) & (mac_df["day"]<end_date)]
mac_df_list.append(n_month_df)
#now create a dataframe of time clipped data
appended_df = pd.concat(mac_df_list, axis=1)