过滤DataFrame时没有名为False的项目

时间:2014-10-23 21:14:40

标签: python pandas

我正在尝试使用in运算符对数据帧进行子集化。在'data'列中,一些字符串包含我正在寻找'Go'的文本。但是,这是我得到的错误:

In: subset = df['Go' in df.data]
Out: KeyError: u'no item named False'

任何人都可以帮忙吗?我也在布尔语句周围用括号试了一下。

1 个答案:

答案 0 :(得分:1)

使用str.contains method测试Go列中每个字符串中是否有data - 它返回一个布尔数组,然后可以用来选择{{1}行}:

df

例如,

df.loc[df['data'].str.contains(r'Go')]

In [74]: df = pd.DataFrame({'data': ['No', 'Go', 'BoGo']}) In [75]: df['data'].str.contains(r'Go') Out[75]: 0 False 1 True 2 True Name: data, dtype: bool In [76]: df.loc[df['data'].str.contains(r'Go')] Out[76]: data 1 Go 2 BoGo 正在测试'Go' in df['data']是否在Go的索引中并且返回单个布尔值False。 df['data']正在引发KeyError,因为没有名为df[False]的列。