检查pandas dataframe列中的值是否在另一列中。 isin方法不起作用

时间:2019-12-02 09:47:38

标签: python pandas dataframe

我需要检查A列中的值是否包含B列中的值。 我尝试使用 isin()方法:

import pandas as pd

df = pd.DataFrame({'A': ['filePath_en_GB_LU_file', 'filePath_en_US_US_file', 'filePath_en_GB_PL_file'],
                   'B': ['_LU_', '_US_', '_GB_']})

df['isInCheck'] = df.A.isin(df.B)

由于某种原因,它不起作用。 它仅返回 False 值,而对于前两行,它应返回 True

我在那里想念什么?

2 个答案:

答案 0 :(得分:1)

我认为您需要DataFrame.apply,但最后一行也要匹配:

function onesignal_mobile_registration( $user_login, $user ) {

    // Get user data
    $user_id = $user->ID;
    $user_email = $user->user_email;

    ?>

        <script>
            gonative_onesignal_info(info);
        </script>

    <?php

    $oneSignalPushToken = ???;
    update_user_meta( $user_id, 'oneSignalPushToken', $oneSignalPushToken);

}
add_filter( 'wp_login', 'onesignal_mobile_registration', 10, 2 );

答案 1 :(得分:0)

尝试使用申请:

df['isInCheck'] = df.apply(lambda r: r['B'] in r['A'], axis=1)

这将逐行检查。如果要检查是否存在多个元素,也许应该为其中每个元素创建一列:

for e in df['B'].unique():
    df[f'has_"{e}"'] = df.apply(lambda r: e in r['A'], axis=1)

print(df)


                       A     B     has_"_LU_"   has_"_US_"  has_"_GB_"
0  filePath_en_GB_LU_file  _LU_        True       False        True
1  filePath_en_US_US_file  _US_       False        True       False
2  filePath_en_GB_PL_file  _GB_       False       False        True