如果包含字符串,熊猫重命名列

As3*_*tin 0 python-2.7 pandas

我想遍历数据框中的所有列,并重命名(或映射)列(如果它们包含某些字符串)。

例如:使用字符串 'agri' 重命名包含 'agriculture' 的所有列

我正在考虑使用renamestr.contains但无法弄清楚如何将它们结合起来实现我想要的。

YS-*_*S-L 7

您可以使用str.replace先处理列,然后将新列重新分配回 DataFrame:

import pandas as pd
df = pd.DataFrame({'A_agriculture': [1,2,3],
                   'B_agriculture': [11,22,33],
                   'C': [4,5,6]})
df.columns = df.columns.str.replace('agriculture', 'agri')
print df
Run Code Online (Sandbox Code Playgroud)

输出:

   A_agri  B_agri  C
0       1      11  4
1       2      22  5
2       3      33  6
Run Code Online (Sandbox Code Playgroud)

  • ``replace`` 中指定的模式是正则表达式,因此您可以执行以下操作:``replace('.*agriculture*', 'agri')``; 但是,这会导致更新后的 DataFrame 有两列同名。 (2认同)