Python TypeError:无法对 <class 'pandas.core.index.Int64Index'> 进行切片停止值索引

Abh*_*wal 3 python csv python-2.7 pandas

在尝试使用 python 和 pandas 过滤一些过去的数据时遇到类型错误。这是错误

类型错误:无法使用 < type 'float'> 的这些索引器 [327.0] 在 < class 'pandas.core.index.Int64Index'> 上进行切片停止值索引

代码

# 65% of training data
ratio = 0.65
train_data_df = df_replace[:round(dataset_length*ratio)]  
test_data_df = df_replace[-(1-round(dataset_length*ratio)):]  

# Create Respected CSV
train_data_df.to_csv('Train.csv',index=False)
test_data_df.to_csv('Test.csv',index=False)
Run Code Online (Sandbox Code Playgroud)

附加信息

该代码正在创建一个新的 CSV 文件India_in_Tests_Filter.csv,该文件具有超过 450 行和 3 列,如下所示:

Result Toss Bat

Lost   won  1st 
Won    won  2nd
Run Code Online (Sandbox Code Playgroud)

虽然India_in_Tests.csv有超过 450 行和 7 列。

所以各位,有什么想法吗?

piR*_*red 5

考虑 df

df = pd.DataFrame(range(10), list(range(320, 330)))
Run Code Online (Sandbox Code Playgroud)

然后用它切片

df[:327.0]
Run Code Online (Sandbox Code Playgroud)
TypeError: cannot do slice indexing on <class 'pandas.indexes.numeric.Int64Index'>
with these indexers [327.0] of <type 'float'>
Run Code Online (Sandbox Code Playgroud)

您的round函数正在返回一个float. 使它成为int替代

df[:int(327.0)]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

你的代码应该是什么样子

train_data_df = df_replace[:int(dataset_length*ratio)]  
test_data_df = df_replace[-(1-int(dataset_length*ratio)):]  
Run Code Online (Sandbox Code Playgroud)