
[英]TypeError: cannot do index indexing on <class 'pandas.core.indexes.datetimes.DatetimeIndex'> with these indexers [1] of <class 'int'>
[英]Change <class 'pandas.core.indexes.base.Index'> to <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
我有
df = pd.read_csv("C:AAPL_MIN.csv", parse_dates=True, index_col='datetime')
print(type(df.index))
如何将类型从 <class 'pandas.core.indexes.base.Index'> 更改为 <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
日期时间为 2020-09-14 09:30:00-04:00
编辑:
这是带有输出的更新代码
import pandas as pd
df = pd.read_csv("file",header=0)
df['datetime'] = pd.to_datetime(df['datetime'])
print(type(df['datetime'][0]))
#class 'datetime.datetime'
print(type(df['datetime']))
#class 'pandas.core.series.Series'
df.set_index('datetime', inplace=True, drop=True)
print(type(df.index))
#class 'pandas.core.indexes.base.Index'
open high low close volume
datetime
2020-10-06 09:30:00-04:00 13.2800 13.3500 13.2300 13.2501 1060985
2020-10-06 09:31:00-04:00 13.2600 13.2600 13.1900 13.2150 377251
2020-10-06 09:32:00-04:00 13.2110 13.2299 13.1922 13.2143 391055
第一个选项
只需更换
df['datetime'] = pd.to_datetime(df['datetime'])
和
df['datetime'] = pd.DatetimeIndex(df['datetime'])
保持所有其他代码相同。
当您使用 pd.to_datetime() 格式化列然后将其转换为索引时,就会出现问题。
第二种选择
如果您想要修改当前索引,而不是再次生成它,另一个选项是:
df.index = pd.DatetimeIndex(df.index)
第三选项
你也可以一步一步来
df = df.reset_index()
df['datetime'] = pd.DatetimeIndex(df['datetime'])
df.set_index('datetime', inplace = True, drop = True)
我有一个类似的问题,这解决了它。
我希望它会帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.