Python 重新采样日期时间
(我想)我有一个数据集,其中的列表示Python 重新采样日期时间,python,datetime,pandas,Python,Datetime,Pandas,(我想)我有一个数据集,其中的列表示datetime间隔 列在datetime中转换为: for col in df.columns: df.rename({col: pd.to_datetime(col, infer_datetime_format=True)}, inplace=True) 然后,我需要使用mean 我试过了 df = df.resample('1q', how='mean', axis=1) DataFrame还有一个多索引集['RegionNa
datetime
间隔
列在datetime中转换为:
for col in df.columns:
df.rename({col: pd.to_datetime(col, infer_datetime_format=True)}, inplace=True)
然后,我需要使用mean
我试过了
df = df.resample('1q', how='mean', axis=1)
DataFrame
还有一个多索引集['RegionName','country']
但我得到了一个错误:
Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
to_datetime
函数出现问题还是采样错误?(我认为)您正在重命名每个列标题,而不是将整个列对象设置为日期时间索引
请尝试以下方法:
df.columns = pd.to_datetime(df.columns)
然后运行您的重新采样
注意:
在转换为
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
但是列的值是另一个信息(price-我想要三个月(三列)的平均值)。我实际上想要头作为DateTime,这样我就可以将月份聚合成季度。你能发布数据帧的前几行吗?基于你给出的信息,
df.rename
语句应该失败。