Pandasでif文に2つ以上の条件が入る変換

[code]

    x1,..,y14
    abc, ..., -
    
[/code]

のようなデータフレームdfがあります。

x1 == 'abc' かつ y14 == '-' ならば y14 = '★'のような変換をしたいと考えております。

[code]

    def henkan(x):
        if x == abc:
            return '★'
    
    df.y14 = df.y14.apply(henkan)
    
    
[/code]

のようなコードは思いつくのですが、条件が2つになる場合はどのように記述すればよろしいでしょうか？




質問されていることを実行する場合、[Boolean indexing](https://pandas.pydata.org/pandas-
docs/stable/user_guide/indexing.html#boolean-indexing) を利用して、

[code]

    df.loc[(df['x1'] == 'abc') & (df['y14'] == '-'), 'y14'] = '★'
    
[/code]

等のようにするのが一般的です。

どうしても`.apply()`メソッドを用いる必要がある場合は以下のようになります。

[code]

    def henkan(x):
        if x['x1'] == 'abc' and x['y14'] == '-':
            x['y14'] = '★'
        return x
    
    df = df.apply(henkan, axis=1)
    
[/code]




質問されていることを実行する場合、[Boolean indexing](https://pandas.pydata.org/pandas-
docs/stable/user_guide/indexing.html#boolean-indexing) を利用して、

[code]

    df.loc[(df['x1'] == 'abc') & (df['y14'] == '-'), 'y14'] = '★'
    
[/code]

等のようにするのが一般的です。

どうしても`.apply()`メソッドを用いる必要がある場合は以下のようになります。

[code]

    def henkan(x):
        if x['x1'] == 'abc' and x['y14'] == '-':
            x['y14'] = '★'
        return x
    
    df = df.apply(henkan, axis=1)
    
[/code]

