簡體   English   中英

Python:如何通過幾天內特定日期過濾熊貓中日期的數據框?

[英]Python: How to filter a DataFrame of dates in Pandas by a particular date within a window of some days?

我有一個日期的DataFrame,並想過濾特定的日期+-幾天。

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:按小時,日和月按年份分組對熊貓中的DataFrame進行過濾

我創建的用於實現此目的的函數是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM