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

如何按部分字符串匹配搜索列名并按字典替换列中的值?

  •  1
  • RustyShackleford  · 技术社区  · 5 年前

    我需要根据部分字符串搜索列名并替换dictionary中的列值。

    我正在搜索部分列名字符串,如下所示:

    df.loc[df.columns.str.contains('column na')]
    

    效果很好。

    现在,我想用字典值替换列中由部分字符串标识的值,而字典值只能在完整列名上这样做:

    di = {'a': 0, 'b': 1,'c':2,'d':3 }
    
    df['column name'].replace(di,inplace=True)
    

    如何将部分字符串搜索与替换相结合?

    我试过这个:

    df = df.loc[df.columns.str.contains('column na')].replace(di, inplace=True)
    

    但这将用消息替换整个df NoneType object of builtins module

    编辑:

    当前df如下所示:

    column1-adfas         column2-zdfsdf
    a                            b
    

    我希望能够搜索和替换部分列名字符串中的值,如下所示:

    column1-adfas         column2-zdfsdf
    0                            1
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Umar.H    5 年前

    如果我明白,我们可以利用 .map 但是它只适用于序列,所以让我们使用apply函数,我们可以使用 filter

    cols = df.filter(like='column').columns
    df[cols] = df[cols].apply(lambda x : x.map(di))
    

    print(df)
         column1-adfas  column2-zdfsdf
    0              0               1