熊猫新手。
拥有订单的DataFrame:
A B C Date1 Date2 D
包含多行值。我想基于季度将整个DataFrame划分为多个数据帧,即(Jan-Mar, Apr-Jun, Jul-Sep, Oct-Dec)
。我试图只使用相同的Date1列值。到目前为止我尝试了以下内容:
data_q = data.groupby(pandas.TimeGrouper(freq = '3M'))
日期的格式为2009-11-03。
答案 0 :(得分:1)
有几种方法可以做到这一点。
我会使用Date1
方法确保.dtype
列是日期时间类型。
e.g。 df['Date1'].dtype
如果不是,则使用:
强制转换为datetime对象df.Date1 = pd.to_datetime(df.Date1)
为最终的数据框切片添加一个四分之一列:
df['quarters'] = df.Date1.dt.quarter
创建数据框:
q1 = df[df.quarters == 1]
q2 = df[df.quarters == 2]
q3 = df[df.quarters == 3]
q4 = df[df.quarters == 4]
答案 1 :(得分:0)
因此,对我来说最简单的方法是将Date1
转换为您的索引,然后将groupby
转换为该季度。
df2 = df.set_index('Date1')
quardfs = list(df2.groupby(df2.index.quarter))
这将为您留下quardfs,其中包含DataFrames
列表。
如果您不想将Date1
设置为索引,您也可以将其从DataFrame
复制出来并使用它:
quars = pd.DatetimeIndex(df['Date1']).quarter
quardfs = list(df2.groupby(quars))