![](/img/trans.png)
[英]Pandas dataframe select rows where a list-column contains any of a list of strings
[英]Most concise way to select rows where any column contains a string in Pandas dataframe?
select 中任何列包含 Pandas dataframe 中的字符串的所有行的最簡潔方法是什么?
例如,給定以下 dataframe 到 select 任何列中的值包含b
的那些行的最佳方法是什么?
df = pd.DataFrame({
'x': ['foo', 'foo', 'bar'],
'y': ['foo', 'foo', 'foo'],
'z': ['foo', 'baz', 'foo']
})
我對 Pandas 沒有經驗,到目前為止我想出的最好的是相當麻煩的df[df.apply(lambda r: r.str.contains('b').any(), axis=1)]
. 有更簡單的解決方案嗎?
至關重要的是,我想檢查任何列中的匹配項,而不是特定列中的匹配項。 據我所知,其他類似的問題只針對單個列或列列表。
這個問題沒有得到答案..但是問題本身和評論已經得到了答案,這對我來說非常有效..我在其他任何地方都找不到答案。
所以我只是將答案復制粘貼給那些覺得它有用的人。 我為不區分大小寫的搜索添加了 case=False
@Reason 的解決方案:
到目前為止我想出的最好的是相當麻煩
這個對我有用。
df[df.apply(lambda r: r.str.contains('b', case=False).any(), axis=1)]
@rbinnun 的解決方案:
這個對我來說是一個測試數據集..但是對於一些真實的數據集..它返回了一個如下的unicode錯誤,但我認為通常也是一個很好的解決方案
df[df.apply(lambda row: row.astype(str).str.contains('b', case=False).any(), axis=1)]
處理非字符串列、nans 等。
UnicodeEncodeError: 'ascii' codec can't encode character u'\xae' in position 5: ordinal not in range(128)
df.apply
在處理大量(數百萬)行時太慢了。 尋找別的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.