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

重命名与旧名称具有类似字符串的数据帧中的列名称

  •  0
  • Manvi  · 技术社区  · 6 年前

    我想在数据框架中重命名一个列名。数据是动态的,列名也可能包含一些非英语字符。所以我在找类似的东西:

    df = df.rename(columns={'string include (oldName1)': 'newName1', 'string include (oldName2)': 'newName2'}
    

    熊猫目前的重命名功能是:

    df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
    

    此函数需要准确的列名“oldname1”。我想重命名列,即使旧名称包含一些字符串,如/在“oldname1”中。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Tarifazo    6 年前

    你可以使用 df.columns.str.contains :

    df = pd.DataFrame({'oldName1': [1,1], 'zzzoldName2': [2,2], 'someoldName3': [3,3]})
    
    converters = {'oldName1': 'newName1','oldName2': 'newName2','oldName3': 'newName3'}
    conversion_map = {df.columns[df.columns.str.contains(old)][0]: new for old, new in converters.items()}
    
    df.rename(columns=conversion_map)
    
    >>    newName1  newName3  newName2
    0         1         3         2
    1         1         3         2
    

    请注意 [0] 将返回第一个匹配项,因此您可能需要检查 conversion_map 查看名称是如何更改的。如果这样找不到名称,它将引发 IndexError

    推荐文章