如果您想将您筛选的列设置为新索引,那么您也可以考虑使用.filter
;如果你想保持它作为一个单独的列,然后str.contains
是要走的路。
比方说,你有
df = pd.DataFrame({'vals': [1, 2, 3, 4, 5], 'ids': [u'aball', u'bball', u'cnut', u'fball', 'ballxyz']})
ids vals
0 aball 1
1 bball 2
2 cnut 3
3 fball 4
4 ballxyz 5
,你的计划是过滤器,其中ids
包含ball
并设置ids
新索引的所有行,你可以做
df.set_index('ids').filter(like='ball', axis=0)
这给
vals
ids
aball 1
bball 2
fball 4
ballxyz 5
但是filter
还允许您传递正则表达式,因此您还可以仅筛选列条目以ball
结尾的那些行。在这种情况下,你使用现在,因为它与ball
开始,不与它到底是不是包含ballxyz
进入
df.set_index('ids').filter(regex='ball$', axis=0)
vals
ids
aball 1
bball 2
fball 4
注意。
如果你想获得与ball
开始的所有条目,你可以简单的使用
df.set_index('ids').filter(regex='^ball', axis=0)
产生
vals
ids
ballxyz 5
同一作品的列;所有你需要改变的是axis=0
部分。如果你根据列进行过滤,那将是axis=1
。
您应该接受已发布的5个答案中的一个,在投票按钮下方会出现一个勾号标记,请注意,'str.contains'答案可能是您的要求中最快和推荐的方法:http:/ /pandas.pydata.org/pandas-docs/stable/generated/pandas.core.strings.StringMethods.contains.html#pandas.core.strings.StringMethods.contains – EdChum