如果您想將您篩選的列設置爲新索引,那麼您也可以考慮使用.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