![](/img/trans.png)
[英]How to filter values in columns of df that contains all substring in passed list in Pandas DataFrame Python?
[英]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.contains
和DataFrame.apply
創建布爾掩碼,然后通過DataFrame.any
檢查每行是否至少一個True
並通過boolean indexing
過濾:
resultdf = df1[df1.apply(lambda x: x.str.contains('match', na=False)).any(axis=1)]
或者使用in
在DataFrame.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.