У меня есть DataFrame из этой формы:
In [122]: df=pd.DataFrame({"A":["1,2,3","4,5,6",np.nan,"8"],"B":[6,7,8,9]})
In [123]: df
Out[123]:
A B
0 1,2,3 6
1 4,5,6 7
2 NaN 8
3 8 9
Я хочу отфильтровать строки в B, где список в A содержит определенное значение, например «4».
Я пытался использовать этот синтаксис:
df["B"][["4" in a for a in df["A"].str.split(',')]]
Но я получаю TypeError: argument of type 'float' is not iterable
из-за NaN
в одной из строк.Поэтому я попробовал этот синтаксис -
df["B"][["4" in a for a in df["A"].str.split(',') if pd.notnull(a)]]
Но я получаю ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
.
Есть идеи, как мне заставить это работать?Я попробовал несколько идей, но ни одна из них не сработала, и я не знаю, почему этот синтаксис неправильный.
Ожидаемый результат - 7
.