Pandas:尝试从Excel文件中的df.loc打印值时发生KeyError

我试图用pandasparsing一个Excel文件。

import pandas as pd import xlrd xl_file = pd.ExcelFile("file.xlsx") df = xl_file.parse("Sheet1") 

现在,如果我从表格中得到一个值( name ):

 if len(df.loc[df["Col A"].str.contains("John"), "Col B"]) > 0: name = df.loc[df["Col A"].str.contains("John"), "Col B"] 

然后print name ,结果是:

 1 John Doe Name: Col B, dtype: object 

print name.values

 [u'John Doe'] 

但是,如果我尝试检索print name[0]的实际string,我得到KeyError

  File "pandas/core/series.py", line 583, in __getitem__ result = self.index.get_value(self, key) File "pandas/indexes/base.py", line 1980, in get_value tz=getattr(series.dtype, 'tz', None)) File "pandas/index.pyx", line 103, in pandas.index.IndexEngine.get_value (pandas/index.c:3332) File "pandas/index.pyx", line 111, in pandas.index.IndexEngine.get_value (pandas/index.c:3035) File "pandas/index.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandas/index.c:4018) File "pandas/hashtable.pyx", line 303, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6610) File "pandas/hashtable.pyx", line 309, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6554) KeyError: 0 

可能是什么问题呢?

name是一个系列,并且0不在系列的索引(check name.index )中。 这解释了错误信息。

如果要select系列中的第一个元素,请执行以下操作:

 name.iloc[0]