代码之家  ›  专栏  ›  技术社区  ›  user3535074

Pandas系列不区分大小写的匹配和值之间的部分匹配

  •  4
  • user3535074  · 技术社区  · 7 年前

    我有以下操作来添加一个状态,显示一个数据帧列的列中的任何字符串在另一个数据框的指定列中的位置。看起来是这样的:

    df_one['Status'] = np.where(df_one.A.isin(df_two.A), 'Matched','Unmatched')
    

    如果字符串大小写不同,则不匹配。是否可以在不区分大小写的情况下执行此操作?

    此外,当一个值在 df_one.A df_2.A ? e、 g.df_一。A abcdefghijkl->df_2。A ijkl='匹配'

    1 回复  |  直到 7 年前
        1
  •  6
  •   cmaher MSeifert    6 年前

    df_one['Status'] = np.where(df_one.A.str.lower().isin(df_two.A.str.lower()), \ 
                                'Matched', 'Unmatched')
    

    您可以通过检查df_中的每个字符串是否为一个来执行第二个测试。A以df_two中的任何字符串结尾。A、 这样(假设您仍然需要不区分大小写的匹配):

    df_one['Endswith_Status'] = np.where(df_one.A.str.lower().apply( \
                                          lambda x: any(x.endswith(i) for i in df_two.A.str.lower())), \ 
                                          'Matched', 'Unmatched')