93854


それぞれの列の値が、文面に含まれているかを判定するには、どうすればよいでしょうか？

[code]

    import pandas as pd
    df = pd.DataFrame(
        data={
            'コンテキスト': ['東京は晴れ', '曇りの神奈川', '熱い沖縄の気候'],
            'キーワード': ['福岡', '神奈川', '沖縄']},
        index=['xx', 'yy', 'zz']
    )
    display(df)
    
[/code]

[code]

    # それぞれの列の値が、文面に含まれているかを判定するには、どうすればよいでしょうか？
    # ループしなければならないものでしょうか。pd.Series.str.contains()の引数にSeriesが指定できるとよいのですが。。
    print('◇期待する結果')
    expedted_df = pd.DataFrame(
        data={
            'コンテキスト': ['東京は晴れ', '曇りの神奈川', '熱い沖縄の気候'],
            'キーワード': ['福岡', '神奈川', '沖縄'],
            'Flag': [False, True, True]
        },
        index=['xx', 'yy', 'zz']
    )
    display(expedted_df)
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/0I4HY.png)](https://i.stack.imgur.com/0I4HY.png)


CC BY-SA 4.0
2023-02-15T08:29:56.053
93849
2023-02-15T12:37:03.883
53109
question
python python3 pandas
それぞれの列の値が、文面に含まれているかを判定する


ほぼループに近いけどこんな感じに記述できます

[code]

    df['flag'] = df.apply(lambda s: s['キーワード'] in s['コンテキスト'], axis=1)
    display(df)
    
[/code]


CC BY-SA 4.0
2023-02-15T09:01:55.413
93851
2023-02-15T09:01:55.413
43025
93849
answer


Numpy の `vectorize()` を使う例。

[code]

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(
        data={
            'コンテキスト': ['東京は晴れ', '曇りの神奈川', '熱い沖縄の気候'],
            'キーワード': ['福岡', '神奈川', '沖縄']},
        index=['xx', 'yy', 'zz']
    )
    
    df['flag'] = np.vectorize(lambda ctx, kw: kw in ctx)(*df.T.values)
    print(df)
    
[/code]

| コンテキスト | キーワード | flag  
---|---|---|---  
xx | 東京は晴れ | 福岡 | False  
yy | 曇りの神奈川 | 神奈川 | True  
zz | 熱い沖縄の気候 | 沖縄 | True


CC BY-SA 4.0
2023-02-15T12:37:03.883
93854
2023-02-15T12:37:03.883
47127
93849
answer