パンダの列がリストからすべての要素が含まれているかどうかをチェック

タウバー:

私はこのようなDFを持っています:

frame = pd.DataFrame({'a' : ['a,b,c', 'a,c,f', 'b,d,f','a,z,c']})

そして、項目のリスト:

letters = ['a','c']

私の目標は、すべての行を取得することでframe、少なくとも2つの要素が含まれていますletters

私はこの解決策を思い付きました:

for i in letters:
    subframe = frame[frame['a'].str.contains(i)]

これは私が欲しいものを私に与えますが、それは、スケーラビリティの面で最善の解決策ではないかもしれません。任意の「ベクトル化」ソリューションはありますか?感謝

セルジュBallestaの:

私はシリーズのリストを作成して、ベクトル化適用されますnp.all

contains = [frame['a'].str.contains(i) for i in letters]
resul = frame[np.all(contains, axis=0)]

予想通りそれは与えます:

       a
0  a,b,c
1  a,c,f
3  a,z,c

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=372198&siteId=1