タウバー:
私はこのような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