我正在尝试使用in运算符对数据帧进行子集化。在'data'列中,一些字符串包含我正在寻找'Go'的文本。但是,这是我得到的错误:
In: subset = df['Go' in df.data]
Out: KeyError: u'no item named False'
任何人都可以帮忙吗?我也在布尔语句周围用括号试了一下。
答案 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]
的列。