У меня есть фрейм данных и список:
df = pd.DataFrame({'id':[1,2,3,4,5,6,7,8],
'char':[['a','b'],['a','b','c'],['a','c'],['b','c'],[],['c','a','d'],['c','d'],['a']]})
names = ['a','c']
Я хочу получить строки, только если оба столбца a
и c
присутствуют в столбце char
(порядок не имеет значенияздесь)
Ожидаемый результат:
char id
1 [a, b, c] 2
2 [a, c] 3
5 [c, a, d] 6
Мои усилия
true_indices = []
for idx, row in df.iterrows():
if all(name in row['char'] for name in names):
true_indices.append(idx)
ids = df[df.index.isin(true_indices)]
Что дает мне правильный вывод, ноон слишком медленный для большого набора данных, поэтому я ищу более эффективное решение.