2016-12-27 153 views
3

(我认为)我有代表datetime间隔重采样大熊猫列DATETIME

列列的数据集,日期时间转化用:

for col in df.columns: 
     df.rename({col: pd.to_datetime(col, infer_datetime_format=True)}, inplace=True) 

然后,我需要resample列(一年一个月2001-01“)到宿舍使用mean

我试图

df = df.resample('1q', how='mean', axis=1) 

DataFrame也有multindex设置['RegionName', 'County']

但我得到的错误:

Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index' 

是在to_datetime功能或在错误的取样问题?

+0

你可以发布您的数据框的头几行?根据您提供的信息,'df.rename'语句应该失败。 –

回答

3

(我认为)要重命名每列头,而不是使整个列对象一个DatetimeIndex

试试这个:

df.columns = pd.to_datetime(df.columns) 

然后运行resample


备注:
我会用period做到这一点后转换为DatetimeIndex。这样,您可以在列标题中获得期限,而不是本季度的结束日期。

df.groupby(df.columns.to_period('Q'), axis=1).mean() 

演示

df = pd.DataFrame(np.arange(12).reshape(2, -1), 
        columns=['2011-01-31', '2011-02-28', '2011-03-31', 
          '2011-04-30', '2011-05-31', '2011-06-30']) 

df.columns = pd.to_datetime(df.columns) 

print(df.groupby(df.columns.to_period('Q'), axis=1).mean()) 

    2011Q1 2011Q2 
0  1  4 
1  7  10 
+0

但是列的价值是另一个信息(价格 - 我想要在三个月的平均值(三列)。我实际上想要头像DateTime,以便我可以将几个月汇总到四分之一 –

+0

不。 。它工作了,谢谢 –