DataFrame的行名称为日期
date=pd.date_range(start='20210201',periods=5,freq='B')
dataframe行索引名显示为2021-02-01到2021-02-05
删除列时data.drop(['2021-02-04]',axis=1)
报错KeyError:['2021-02-04']not found in axis
回题主的追问哈
数据格式指的是,虽然你在dataframe看到的是"2021-02-04",但是可能这个数据的实际存储的数据类型并不是简单的字符串,所以你用字符串"2021-02-04"去匹配会显示not found,因为二者的数据类型不一致。
来验证一下这个假设
首先,用题主的代码生成date
可以看到date是一个
datetimeindex对象
而其中的元素(就用那个看起来像是"2021-02-04"的那一个元素)
其实是一个pandas._libs.tslibs.timestamps.Timestamp对象,并不是字符串
因此你用字符串与找肯定是找不到的。。。
感觉可以先把columns的每一个元素的type确认一下然后把drop的参数转换为为相同数据类型试试
时间格式写错了吧,上面你写的是20210201,下面要删除的列名称写成了2020-02-04
感觉两个思路
首先思路归零,2021-02-04这个值到底是indexs 还是columns里面的,drop默认是删除行,也就是indexs维度,如果是columns维度,才需要axis=1
报错是not found,建议先把你要删除的维度上indexs或者columns打印出来,然后看下2021-02-04在不在在不在里面(可以用in判断一下),这是第一步
如果上面没问题的话,可能是格式的问题,是不是需要用date 而不是string呢