重命名数据框中的列名,该列名具有与旧名称相似的字符串

时间:2019-01-30 20:07:15

标签: python pandas dataframe rename

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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