Carguemos, antes de nada, el dataset Titanic proveído por la librería seaborn:
titanic = sns.load_dataset("titanic")
titanic.head()
Echemos un vistazo a los valores que toma el campo embark_town:
titanic.embark_town.unique()
Seleccionar aquellas filas en las que campo toma un cierto valor es sencillo. Por ejemplo, para seleccionar aquellas en las que el puerto de embarque es Cherbourg basta hacer lo siguiente:
selection = titanic[titanic.embark_town == "Cherbourg"]
selection.head()
Si quisiéramos seleccionar las filas en las que el campo en cuestión, embark_town, toma el valor Cherbourg o el valor Queenstown, ya no es tan obvio. La primera opción a la que podemos recurrir es incluir ambas condiciones uniéndolas el operador "o lógico":
selection = titanic[(titanic.embark_town == "Cherbourg") | (titanic.embark_town == "Queenstown")]
selection.head()
El resultado es el esperado siempre que usamos el operador | (el operador or devuelve un error).
En todo caso, si la lista de condiciones es larga, la mejor opción es usar el operador de pertenencia isin (en el siguiente ejemplo solo se aplica a dos opciones, pero podría ser cualquier número de ellas):
towns = ['Cherbourg', 'Queenstown']
selection = titanic[titanic.embark_town.isin(towns)]
selection.head()