我在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
并迭代其中的项目时出现的问题 - 有点试图解决我在遇到的一些问题时转换为IPython
和Python 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'
我想,这个问题更明确地说明了......
答案 0 :(得分:7)
尝试使用df.columns作为标题:
df[df[df.columns[1]].isin(list)]