列在日期时间使用以下方式进行了转换:
for col in df.columns:
df.rename({col: pd.to_datetime(col, infer_datetime_format=True)}, inplace=True)
然后,我需要使用均值将列(年份和月份“ 2001-01”)重新采样为季度
我试过了
df = df.resample('1q', how='mean', axis=1)
DataFrame还具有一个多重索引集[‘RegionName’,’County’]
但是我得到了错误:
Only valid with DatetimeIndex, timedeltaIndex or Periodindex, but got an instance of 'Index'
解决方法:
(我认为)您正在重命名每个列标题,而不是使整个列对象成为DatetimeIndex
尝试以下方法:
df.columns = pd.to_datetime(df.columns)
然后进行重新采样
注意:
我会在转换为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