72079

[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つになる場合はどのように記述すればよろしいでしょうか？


CC BY-SA 4.0
2020-11-18T17:07:40.950
72042
2020-11-20T00:46:17.010
12457
question
python pandas
Pandasでif文に2つ以上の条件が入る変換


`and` を使えば良さそうです。

[code]

    if x1 == 'abc' and y14 == '-' :
    
[/code]


CC BY-SA 4.0
2020-11-18T17:35:07.720
72043
2020-11-18T17:35:07.720
3060
72042
answer


質問されていることを実行する場合、[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]


CC BY-SA 4.0
2020-11-20T00:46:17.010
72079
2020-11-20T00:46:17.010
37167
72042
answer