简体   繁体   English

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

[英]Rename a column name in dataframe which has some similar string as old name

I want to rename a column name in dataframe. 我想重命名数据框中的列名。 Data is coming on fly and column name may contain some non english characters as well. 数据飞速发展,列名也可能包含一些非英文字符。 So I am looking for something like: 所以我正在寻找类似的东西:

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

Present rename function in Pandas is: Pandas当前的重命名功能是:

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

This function require exact column name 'oldName1'. 该函数需要确切的列名“ oldName1”。 I want to rename column even if old name includes some string like/in 'oldName1'. 我想重命名列,即使旧名称在'oldName1'中包含某些字符串也是如此。

You can use df.columns.str.contains : 您可以使用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

Note that the [0] will return the first match, so you may want to check conversion_map to see how the name is changed. 请注意, [0]将返回第一个匹配项,因此您可能需要检查conversion_map以查看名称的更改方式。 If a name cannot be found this way it will raise an IndexError 如果无法通过这种方式找到名称,则会引发IndexError

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM