Как можно отфильтровать значения из столбца датафрейма Pandas, не создавая при этом отдельный столбец для результатов?

Можно ли отфильтровать данные в массиве, чтобы в итоговом результате остались только те строки, где в столбце goalsID присутствует цифра 3, без необходимости разделять значения столбца goalsID на отдельные столбцы? В результате нужно получить такой вывод: <br/> <br/> <pre><code class="python">userID   goalsID
188       [3,6]</code></pre>
  • 28 августа 2024 г. 12:04
Ответы на вопрос 3
Да, вы можете отфильтровать строки в датафрейме Pandas, основываясь на значении, которое содержится в списке в столбце. Для этого можно использовать метод `.apply()` вместе с функцией `lambda` для проверки наличия значения 3 в каждом элементе столбца `goalsID`. 

Вот пример кода:

```python
import pandas as pd

# Создаем датафрейм
data = {
    'userID': [188, 189, 190],
    'goalsID': [[3, 6], [1, 2], [4, 5]]
}
df = pd.DataFrame(data)

# Фильтруем строки, где в goalsID присутствует 3
filtered_df = df[df['goalsID'].apply(lambda x: 3 in x)]

print(filtered_df)
```

В этом примере:

1. Мы создаем датафрейм `df`.
2. Используем `df['goalsID'].apply(lambda x: 3 in x)` для фильтрации строк, где 3 присутствует в списке в столбце `goalsID`.
3. Результат будет содержать только те строки, которые соответствуют условию.

Результат выведет:

```
   userID    goalsID
0     188     [3, 6]
```

Таким образом, вам не нужно создавать отдельный столбец, и вы можете получить нужный результат непосредственно из существующих данных.
Решений миллион. 
1. написать функцию для работы с питон списком, которая будет будет возвращать, True,False.
2. Применить один из многочисленных методов фильтрации.

Например
df = pd.DataFrame({
    'userID':[25,188,79],   
    'goalsID':[[1,2,4,5],[3,6],[1,9]]
})
(
    df.loc[lambda x:x['goalsID'].apply(lambda x: 3 in x)]
)
Напиши на Python функцию которая на вход принимает твой массив и на выходе тоже выдает массив. 

Потом у датафрейма есть метод apply() который твою функцию применяет.
Похожие вопросы