[英]How can I subset a data frame based on dates, when my dates column is not the index in Python?
我有一個帶有日期列(不是索引)的大型數據集,其日期格式為%Y-%m-%d %H:%M:%S
。
我想創建該數據框的季度子集,即數據框dfQ1
將包含日期在月份[1和4]之間的所有行, dfQ2
將包含日期在月[5和8]之間的所有行,等等...子集的標頭與主數據幀的標頭相同。
我怎樣才能做到這一點?
謝謝!
我將添加一個包含季度信息的新列,即:
from datetime import datetime
date_format = "%Y-%m-%d %H:%M:%S"
date_to_qtr = lambda dt: 1 + (datetime.strptime(dt, date_format).month-1) // 3
df['qtr'] = df['date'].apply(date_to_qtr)
(使用floordiv功能)。 然后在新列上建立索引:
dfQ1 = df[df.qtr == 1]
dfQ2 = df[df.qtr == 2]
dfQ3 = df[df.qtr == 3]
dfQ4 = df[df.qtr == 4]
或者,那時您可以只使用groupby df.groupby("qtr")
(請參閱docs )。
使用熊貓,您可以先創建一個datetime列,然后使用date / time Quarter屬性創建一個Quarter列:
from datetime import datetime
date_format = "%Y-%m-%d %H:%M:%S"
df['datetime'] = [datetime.strptime(dt, date_format) for dt in df['date']]
df['quarter'] = [dt.quarter for dt in df['datetime']]
在這里,您可以使用groupby( df.groupby('quarter')
)或通過建立索引來對數據df.groupby('quarter')
進行子集化:
dfQ1 = df[df.quarter == 1]
dfQ2 = df[df.quarter == 2]
dfQ3 = df[df.quarter == 3]
dfQ4 = df[df.quarter == 4]
假設您正在使用熊貓。
dfQ1 = df [(df.date> Qstartdate)&(df.date <Qenddate)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.