

下記のデータフレームに対し、

[code]

    > df = pd.DataFrame({'pref': ['東京都', '神奈川県', '北海道', '埼玉県', '千葉県', '静岡県',
    > '長野県'],
    >                    'city' : ['渋谷区', '横浜市', '函館市', '浦和市', '浦安市' , '浜松市', '岡谷市']}) 
    
[/code]

"1都3県 or その他" を格納する「pref_flg」という列を追加する関数を定義したいです。

出来上がるデータフレームのイメージは下記の通りです。

[code]

    > df2 = pd.DataFrame({'pref': ['東京都', '神奈川県', '北海道', '埼玉県', '千葉県',
    > '静岡県', '長野県'],
    >                     'city' : ['渋谷区', '横浜市', '函館市', '浦和市', '浦安市' , '浜松市', '岡谷市'],
    >                     'pref_flg' : ['1都3県', '1都3県', 'その他', '1都3県', '1都3県' , 'その他', 'その他']})
    
[/code]

下記のように `'文字列' in ●` を使うことを考えましたが、  
文字列が１個の場合は正しく処理できるようなのですが、  
文字列が２個以上ある場合の書き方が分かりません。

[code]

    def get_pref(x):
            if '東京都' in x:   # ここを複数の文字列に指定する方法が分からない
                return '1都3県'
            else:
                return 'その他'
    
    df['pref_flg'] = df['pref'].apply(get_pref)
    
[/code]

アドバイスいただけますと幸いです。

++++++++ 追記  
下記を試してみたところ、想定の結果となりました。

[code]

    prefs = ['東京都', '神奈川県', '千葉県', '埼玉県']
    def get_pref(x):
        global prefs
        if x in prefs:
            return '1都3県'
        else:
            return 'その他'
    
    df5['pref_flg'] = df5['pref'].apply(get_pref)
    
[/code]


CC BY-SA 4.0
2020-09-30T11:29:08.770
70844
2022-10-14T12:37:49.740
2020-10-01T00:38:22.590
41758
41758
question
python pandas
特定の文字列を含む行にフラグを立てる関数を作成したい


[pandas.DataFrame.isin](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.isin.html) と
[numpy.where](https://numpy.org/doc/stable/reference/generated/numpy.where.html)
を使って以下の様にも書く事ができます。

[code]

    import pandas as pd
    import numpy as np
    
    pd.set_option('display.unicode.east_asian_width', True)
    
    df = pd.DataFrame({
      'pref': ['東京都', '神奈川県', '北海道', '埼玉県', '千葉県', '静岡県', '長野県'],
      'city': ['渋谷区', '横浜市', '函館市', '浦和市', '浦安市' , '浜松市', '岡谷市'],
    }) 
    
    df = df.assign(
      pref_flg=np.where(
        df.pref.isin(('東京都', '神奈川県', '埼玉県', '千葉県')),
        '1都3県', 'その他')
    )
    
    print(df)
    
          pref   city  pref_flg
    0    東京都  渋谷区     1都3県
    1  神奈川県  横浜市     1都3県
    2    北海道  函館市     その他
    3    埼玉県  浦和市     1都3県
    4    千葉県  浦安市     1都3県
    5    静岡県  浜松市     その他
    6    長野県  岡谷市     その他
    
[/code]


CC BY-SA 4.0
2020-09-30T16:21:12.933
70851
2020-09-30T16:21:12.933
70844
answer