我想重命名数据框中的列名。数据飞速发展,列名也可能包含一些非英文字符。所以我正在寻找类似的东西:
df = df.rename(columns={'string include (oldName1)': 'newName1', 'string include (oldName2)': 'newName2'}
Pandas中当前的重命名功能是:
df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
此函数需要确切的列名“ oldName1”。我想重命名列,即使旧名称在'oldName1'中包含某些字符串也是如此。
答案 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