Pandas|Index不是datatime index报错

博客围绕pandas中以date作为分组依据求均值时的报错问题展开。当data数据表由函数计算得出,放入函数可正常运行;但以csv形式储存再读取并重新设置date为index后放入函数则报错。原因是存入csv后丢失数据详细信息,解决方案是在set_index前后将date列转为datetime形式。
部署运行你感兴趣的模型镜像

1. 报错提示

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

2. 背景

需要以date作为分组依据,求均值。

grouper = pd.Grouper(freq=’D‘)) # 根据freq的值建立分组列表,D表示天
data.reset_index().set_index('date').groupby(grouper).mean() # data是一个dataframe的数据

data数据表example如下:

assetfactor
date
2015-01-15A0.25
2015-01-15B0.58
2015-01-16A0.89
2015-01-16B0.36

在pandas中,作为index的列会下沉显示,不再归为column

当data数据表由函数计算得出时,放入函数中不会报错,可以运行。
当把data数据表以csv的形式储存,再读取并重新设置date为index,放入函数中,报错。

data = data.set_index('date')

3. 原因

根据提示,报错原因时进行运算的dataframe要求时datetime index形式,而传入的只是index

这是因为数据表存入csv后,失去了数据列表的详细信息,比如全部都变成了column,没有了index的信息,需要重新设置。且列数据的数据类型也丢失了,所以经过set_index后,只是index,而不是datetime index

4. 解决方案

在set_index之前或者之后,把date列转为datetime的形式。

# 先转为datetime
data = data.set_index('date')
data.index = pd.to_datetime(data.index)

# 先设置index
data['date'] = pd.to_datetime(data['date'])
data = data.set_index('date')

5. 碎碎念

啊!终于找到了!😤

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值