【问题标题】:Python: How to filter a DataFrame of dates in Pandas by a particular date within a window of some days?Python:如何在几天的窗口内按特定日期过滤 Pandas 中日期的 DataFrame?
【发布时间】:2016-10-20 00:23:30
【问题描述】:

我有一个日期数据框,并希望过滤特定日期 +- 某些天。

import pandas as pd
import numpy as np
import datetime

dates = pd.date_range(start="08/01/2009",end="08/01/2012",freq="D")
df = pd.DataFrame(np.random.rand(len(dates), 1)*1500, index=dates, columns=['Power'])

如果我选择让我们说日期2009-08-035 天的窗口,输出将类似于:

>>> 
                  Power
2010-07-29   713.108020
2010-07-30  1055.109543
2010-07-31   951.159099
2010-08-01  1350.638983
2010-08-02   453.166697
2010-08-03  1066.859386
2010-08-04  1381.900717
2010-08-05   107.489179
2010-08-06  1195.945723
2010-08-07  1209.762910
2010-08-08   349.554492

注意:我要解决的原始问题是在Python: Filter DataFrame in Pandas by hour, day and month grouped by year

【问题讨论】:

    标签: python date datetime pandas dataframe


    【解决方案1】:

    我为此创建的函数是filterDaysWindow,可以按如下方式使用:

    import pandas as pd
    import numpy as np
    import datetime
    
    dates = pd.date_range(start="08/01/2009",end="08/01/2012",freq="D")
    df = pd.DataFrame(np.random.rand(len(dates), 1)*1500, index=dates, columns=['Power'])
    
    def filterDaysWindow(df, date, daysWindow):
        """
        Filter a Dataframe by a date within a window of days
    
        @type df: DataFrame
        @param df: DataFrame of dates
    
        @type date: datetime.date
        @param date: date to focus on
    
        @type daysWindow: int
        @param daysWindow: Number of days to perform the days window selection
    
        @rtype: DataFrame
        @return: Returns a DataFrame with dates within date+-daysWindow
        """    
        dateStart = date - datetime.timedelta(days=daysWindow)
        dateEnd = date + datetime.timedelta(days=daysWindow)
        return df [dateStart:dateEnd]
    
    df_filtered = filterDaysWindow(df, datetime.date(2010,8,3), 5)
    print df_filtered
    

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多