【发布时间】:2020-09-21 00:20:20
【问题描述】:
我从一个金融 API 中提取了一些股票数据,并用它创建了一个 DataFrame。列是“日期”、“数据 1”、“数据 2”、“数据 3”。然后,我将该 DataFrame 转换为以“日期”列作为索引的 CSV:
df.to_csv('data.csv', index_label='date')
在第二个脚本中,我读取了该 CSV 文件并尝试在两个日期之间对生成的 DataFrame 进行切片:
df = pd.read_csv('data.csv', parse_dates=['date'] ,index_col='date')
df = df['2020-03-28':'2020-04-28']
当我尝试这样做时,我得到以下类型错误:
TypeError: cannot do slice indexing on <class 'pandas.core.indexes.numeric.Int64Index'> with these indexers [2020-03-28] of <class 'str'>
很明显,问题在于我正在尝试使用 str 来切片 datetime 对象。但这是令人困惑的部分!如果在第一步中,我将 DataFrame 保存到 csv 并且不要将“日期”设置为索引:
df.to_csv('data.csv')
在我的第二个脚本中,我不再收到 TypeError:
df = pd.read_csv('data.csv', parse_dates=['date'] ,index_col='date')
df = df['2020-03-28':'2020-04-28']
现在它工作得很好。唯一的问题是我要处理默认的 Pandas 索引列。
为什么我在 CSV 中将“日期”列设置为索引时会收到 TypeError...但是当我没有在 CSV 中设置任何索引时却没有收到 TypeError?
【问题讨论】:
标签: python-3.x pandas dataframe typeerror slice