Python - Pandas'。isin'列表中

时间:2013-05-29 02:18:13

标签: python-2.7 pandas

我在Mac OSX Lion上使用Python 2.7,在IPython shell上使用Pandas 0.11.0。

我有一个简短的问题,使用数据选择方法.isin

问题是我想在项目列表中使用.isin,所以:

data = df[df[header[0]].isin(list)]

执行此操作时出现以下错误:KeyError: u'no item named '

我通过调用以前开发的函数生成初始列表。我尝试在列表中使用eval,这似乎解决了使用raw_input并迭代其中的项目时出现的问题 - 有点试图解决我在遇到的一些问题时转换为IPythonPython 2.7(最初使用Python 3.3)。

我还尝试迭代列表,先做:

data = df[df[header[0]].isin(list[0])]

但这也会返回:KeyError: u'no item named '

更新: 这是标题:

 Unnamed: 0         9752  non-null values
 zipcode            9752  non-null values
 xcoord             9752  non-null values
 ycoord             9752  non-null values
 age_age5064        9752  non-null values
 age_age6574        9752  non-null values
 age_age75plus      9752  non-null values
 sex_female         9752  non-null values
 sex_male           9752  non-null values
 stage_early        9752  non-null values
 stage_late         9752  non-null values
 death_death        9752  non-null values
 death_not_death    9752  non-null values
 access             9752  non-null values
 dtypes: float64(2), int64(12)

另外,我有一个用来获取标题的函数,这让我更容易,输出看起来像这样:

['',
  'zipcode',
  'xcoord',
  'ycoord',
 'age_age5064',
 'age_age6574',
 'age_age75plus',
 'sex_female',
 'sex_male',
 'stage_early',
 'stage_late',
 'death_death',
 'death_not_death',
 'access']

实际上,现在考虑到这一点,可能是造成问题的原因 - 尽管eval仍然无法解决问题。

更新2:

所以,最初,正如您在上面.isin中看到的那样,我使用header[0],这是不对的。我再次尝试使用header[1],这是合适的。我收到以下错误:

 TypeError: 'int' object is not iterable

我也再次尝试了常规列表,并收到了这个错误:

TypeError: int() argument must be a string or a number, not 'list'

我想,这个问题更明确地说明了......

1 个答案:

答案 0 :(得分:7)

尝试使用df.columns作为标题:

df[df[df.columns[1]].isin(list)]