Problem z warunkową filtracją w DataFrame

0

Hej czemu ten kod nie działa?

df = df[(df['Indicator'] == 'False') | ('False' in df['Indicator'])]

W kolumnie Indicator znajduje sie albo string albo lista stringow i wynik powinien zawierac wszystkie wiersze dla ktorych ta kolumna przyjmuje wartosc False albo w kolumnie znajduje sie lista z przynajmniej jedna wartoscia 'False'. Co nalezy poprawic? Problem jest w drugim warunku bo pierwszy dziala.

1
import pandas as pd

df = pd.DataFrame(["foo", "bar", "False", ["foo", "buzz"], "True", ["bar", "False"]], columns=["Indicator"])
df[df['Indicator'].apply(lambda x: 'False' in x)]
0

@Pyxis: Dzieki! Czy lambda to zawsze dzialanie jednoargumentowe? Zastanawiam sie czy da sie moze zrobic cos w tym stylu:

data = pd.DataFrame({'X': [2, 3, 4], 'Y': [5, 6, 0]})
dat[(dat['X'], dat['Y']).apply(lambda x, y: x + y > 5)]

Wiem ze tutaj mozna to zrobic prosto:

data[data['X']+data['Y'] > 5]

ale zastanawiam sie jak wybierac dane z dataframe'u gdy warunek nie jest postaci <,>,<=,>=, != tylko jest jakas inna funkcja roznych kolumn

1
import pandas as pd

def func(x, y):
    return x + y

df = pd.DataFrame({'X': [2, 3, 4], 'Y': [5, 6, 0]})
df.apply(lambda x: func(x['X'], x['Y']), axis=1)

1 użytkowników online, w tym zalogowanych: 0, gości: 1