簡體   English   中英

通過匹配Pandas df中所有列中的子字符串來過濾所有行

[英]Filter all that rows by matching a substring in all the columns in Pandas df

我有一個數據框,我希望將與給定子字符串匹配的所有行寫為列表。

df1 = pd.DataFrame({'col1': ["c1", "match", "c3", "c4", "c5", "c6","c7","c8","c9"],  
                'col2': [" ","a1","a2","Smatch6","a4"," ","a8"," ","a7"],  
                   'col3': ["Red", "Ted", "Pet", "match1", "Pmatch", "Rmatchd","sample","agadR","Padgadg"]
                    }) 

輸出應作為列表放入詞典中

Data_Dictionary ['data'] =此的o / p

嘗試過此代碼,但未返回任何內容

resultdf = df1.filter(like='match', axis=0)

預期結果:resultdf

    col1     col2     col3
1   match    a1       Ted
3   c4       Smatch6  match1
5   c6                Rmatchd

您可以使用Series.str.containsDataFrame.apply創建布爾掩碼,然后通過DataFrame.any檢查每行是否至少一個True並通過boolean indexing過濾:

resultdf = df1[df1.apply(lambda x: x.str.contains('match', na=False)).any(axis=1)]

或者使用inDataFrame.applymap

resultdf = df1[df1.applymap(lambda x: 'match' in str(x)).any(axis=1)]

print (resultdf)
    col1     col2     col3
1  match       a1      Ted
3     c4  Smatch6   match1
4     c5       a4   Pmatch
5     c6           Rmatchd

向量化方法

>>> df1[df1.sum(axis=1).str.contains('match')]

    col1     col2     col3
1  match       a1      Ted
3     c4  Smatch6   match1
4     c5       a4   Pmatch
5     c6           Rmatchd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM