在Pandas DataFrame中裁剪日期的有效方法

时间:2018-10-16 10:50:52

标签: python pandas time-series

我有一个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)

0 个答案:

没有答案