我有一個字母串列:
letters = ['E', 'H', 'T', 'D']
我有一個包含以下行的資料框:
letter_1 letter_2 letter_3 letter_4 letter_5 word
0 D E B U T DEBUT
1 D E B U G DEBUG
2 B E G E T BEGET
3 D E P T H DEPTH
4 D U V E T DUVET
我正在嘗試過濾掉所有不包含字母串列中所有專案的行。
uj5u.com熱心網友回復:
您可以使用集合操作:
df[df.filter(like='letter').agg(set, axis=1) >= set(letters)]
或使用“單詞”:
df[df['word'].agg(set) >= set(letters)]
輸出:
letter_1 letter_2 letter_3 letter_4 letter_5 word
3 D E P T H DEPTH
uj5u.com熱心網友回復:
另一種方法使用麻木的和廣播(這將執行所有比較并確保每個字母至少有 1 個匹配項):
m = (df.filter(like='letter').to_numpy()==np.array(letters)[:,None,None]
).any(2).all(0)
df[m]
輸出:
letter_1 letter_2 letter_3 letter_4 letter_5 word
3 D E P T H DEPTH
uj5u.com熱心網友回復:
另一種選擇是使用numpy.in1d
df[df.word.apply(lambda x: np.in1d(letters, list(x)).all())]
letter_1 letter_2 letter_3 letter_4 letter_5 word
3 D E P T H DEPTH
uj5u.com熱心網友回復:
另一種方法:
df[df['word'].apply(lambda x: all(s in x for s in letters))]
| 指數 | 字母_1 | 字母_2 | 字母_3 | 字母_4 | 字母_5 | 單詞 |
|---|---|---|---|---|---|---|
| 3 | D | 乙 | 磷 | 噸 | H | 深度 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486112.html
