将基于特定列中日期的整个DataFrame划分为季度数据框

时间:2015-06-29 18:19:22

标签: python date python-3.x pandas dataframe

熊猫新手。

拥有订单的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。

2 个答案:

答案 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))