2017-02-04 51 views
1

Я изучаю Python и Scikit, и я делаю несколько простых упражнений. В частном случае, я запускаю следующий код:Нарезка и индексирование серии в Python

import pandas as pd 
df = pd.read_csv('SMSSpamCollection',delimiter='\t',header=None) # from UCIMachineLearningRepository http://archive.ics.uci.edu/ml/datasets/SMS+Spam+Collection 
import numpy as np 
from sklearn.feature_extraction.text import TfidfVectorizer 
from sklearn.linear_model.logistic import LogisticRegression 
from sklearn.cross_validation import train_test_split, cross_val_score 
X_train_raw, X_test_raw, y_train, y_test = train_test_split(df[1], df[0]) 

печатает:

print(X_test_raw[0:5]) 

выхода:

3035  Get ready for <#> inches of pleasure... 
2577     In sch but neva mind u eat 1st lor.. 
3302    RCT' THNQ Adrian for U text. Rgds Vatian 
90  Yeah do! Don‘t stand to close tho- you‘ll catc... 
2355     R we going with the <#> bus? 
Name: 1, dtype: object 

Тогда я индексировать один за другим первые элементы серии X_test_raw :

X_test_raw[0] 

из

'Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...' 

затем

X_test_raw[1] 

из

'Ok lar... Joking wif u oni...' 

затем

X_test_raw[2] 

из

KeyError: 2L 

Что происходит? Почему я получаю разные значения, возвращаемые, когда я нарезаю первую последовательность из 5 элементов и когда я индексирую каждый элемент этой последовательности отдельно? Почему я получаю сообщение о ключевой ошибке, когда я индексирую 3d-элемент серии?

Ваши советы будут оценены

ответ

1

Если использовать X_test_raw[2] вы пытаетесь получить row с index=2, но если отсутствует ПОЛУЧАЕТЕ:

KeyError: 2L

Для выбора положением необходимо iloc или iat:

X_test_raw.iloc[2] 

Образец:

s = pd.Series(['a','s','f'], index=[2,3,5]) 
print (s) 
2 a 
3 s 
5 f 
dtype: object 

print (s[2]) 
a 

print (s[1:3]) 
3 s 
5 f 
dtype: object 

print (s.loc[2]) 
a 


print (s.iloc[2]) 
f 

Вы можете проверить: