【问题标题】:Rename a column name in dataframe which has some similar string as old name重命名数据框中的列名称,该列名称与旧名称具有相似的字符串
【发布时间】:2019-06-24 05:10:02
【问题描述】:

我想重命名数据框中的列名。数据即将到来,列名也可能包含一些非英文字符。所以我正在寻找类似的东西:

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

目前 Pandas 中的重命名功能是:

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

此函数需要确切的列名“oldName1”。即使旧名称包含一些字符串,例如/in 'oldName1',我也想重命名列。

【问题讨论】:

    标签: python pandas dataframe rename


    【解决方案1】:

    你可以使用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

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 2019-08-19
      • 1970-01-01
      相关资源
      最近更新 更多