迭代Pandas系列时出错

时间:2016-09-13 06:41:29

标签: python pandas for-loop indexing keyerror

当我得到这个系列的第一个和第二个元素时,它工作正常,但是从元素3开始,当我尝试获取时出错。

type(X_test_raw)
Out[51]: pandas.core.series.Series

len(X_test_raw)
Out[52]: 1393

X_test_raw[0]
Out[45]: 'Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...'

X_test_raw[1]
Out[46]: 'Ok lar... Joking wif u oni...'

X_test_raw[2]
  

KeyError:2

2 个答案:

答案 0 :(得分:9)

考虑系列X_test_raw

X_test_raw = pd.Series(
    ['Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...',
     'Ok lar... Joking wif u oni...',
     'PLEASE DON\'T FAIL'
    ], [0, 1, 3])

X_test_raw没有使用2引用的X_test_raw[2]索引。

而是使用iloc

X_test_raw.iloc[2]

"PLEASE DON'T FAIL"

您可以使用iteritems

遍历该系列
for index_val, series_val in X_test_raw.iteritems():
    print series_val

Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...
Ok lar... Joking wif u oni...
PLEASE DON'T FAIL

答案 1 :(得分:7)

没有值为2的索引。

样品:

X_test_raw = pd.Series([4,8,9], index=[0,4,5])

print (X_test_raw)
0    4
4    8
5    9
dtype: int64

#print (X_test_raw[2])
#KeyError: 2

如果需要使用第三个值iloc

print (X_test_raw.iloc[2])
9

如果只需要迭代值:

for x in X_test_raw:
    print (x)
4
8
9

如果需要indexesvalues使用Series.iteritems

for idx, x in X_test_raw.iteritems():
    print (idx, x)
0 4
4 8
5 9