繁体   English   中英

重新采样pandas列datetime

[英]Resampling pandas columns datetime

(我认为)我有一个数据集,其中的列表示datetime时间间隔

列在日期时间转换为:

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

然后,我需要使用mean将列(年份和月份'2001-01') resample为四分之一

我试过了

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

DataFrame还有一个多索引集['RegionName', 'County']

但我得到错误:

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

问题是在to_datetime函数中还是在错误的采样中?

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

试试这个:

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

然后运行resample


注意:
转换为DatetimeIndex后,我会用period来完成。 这样,您可以在列标题中获得句点,而不是季度的结束日期。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM