我有一個帶有日期索引的熊貓資料框。像這樣
A B C
date
2021-04-22 2 1 3
2021-05-22 3 2 4
2021-06-22 4 3 5
2021-07-22 5 4 6
2021-08-22 6 5 7
我想創建一個新的資料框,它選擇給定日期前 2 天的行。因此,例如,如果我給 selected = '2021-08-22',我需要的是一個新的資料框,如下所示
A B C
date
2021-07-22 5 4 6
2021-08-22 6 5 7
有人可以幫我嗎?非常感謝您的幫助
uj5u.com熱心網友回復:
您可以將索引轉換為 DatetimeIndex,然后使用df[start_date : end_date]
df.index = pd.to_datetime(df.index)
selected = '2021-08-22'
res = df[(pd.to_datetime(selected)-pd.Timedelta(days=2)) : selected]
print(res)
A B C
2021-08-22 6 5 7
uj5u.com熱心網友回復:
我假設您的意思是幾個月而不是幾天。
您可以使用該df.apply方法來使用函式過濾資料框行。
這是一個接收您描述的輸入并回傳新資料幀的函式:
作業示例
def filter_df(df, date, num_months):
def diff_month(row):
date1 = datetime.strptime(row["date"], '%Y-%m-%d')
date2 = datetime.strptime(date, '%Y-%m-%d')
return ((date1.year - date2.year) * 12 date1.month - date2.month)
return df[df.apply(diff_month, axis=1) > - num_months]
print(filter_df(df, "2021-08-22", 2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/491290.html
上一篇:在Angular/Javascript/Typescript中將當前日期時間格式化為“yyyy-MM-dd'T'HH:mm:ss.SSSZ”
