为数据帧切片中的列添加前缀

ga9*_*dil 4 python dataframe pandas

我有一个相当大的 DataFrame(~500 列和 >5000 行)。我想为前 15 列添加一个前缀。我找到了一个函数add_prefix(),它可以一次为所有列设置前缀。我尝试了以下方法:

df[df.columns[range(0,15)]] = df[df.columns[range(0,15)]].add_prefix('f_')
Run Code Online (Sandbox Code Playgroud)

'f_'作为前缀,我想补充。然而,输出似乎没有改变。

>>>
       mean        std         var  ...         525       526  label
0 -2.546261  17.827072  317.804485  ...   -0.314016 -0.310878    0.0
1 -2.338710  17.915556  320.967136  ...   -0.345603 -0.343088    0.0
2 -2.095051  17.539407  307.630788  ...   -0.323596 -0.324990    0.0
3 -1.685209  18.257797  333.347150  ...   -0.310060 -0.320796    0.0
4 -1.846169  17.240523  297.235618  ...   -0.318660 -0.322732    0.0
Run Code Online (Sandbox Code Playgroud)

我想要的是:

>>>
     f_mean      f_std       f_var  ...         525       526  label
0 -2.546261  17.827072  317.804485  ...   -0.314016 -0.310878    0.0
1 -2.338710  17.915556  320.967136  ...   -0.345603 -0.343088    0.0
2 -2.095051  17.539407  307.630788  ...   -0.323596 -0.324990    0.0
3 -1.685209  18.257797  333.347150  ...   -0.310060 -0.320796    0.0
4 -1.846169  17.240523  297.235618  ...   -0.318660 -0.322732    0.0
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

yat*_*atu 6

鉴于索引不支持可变操作,您不能像当前那样直接分配前缀。因此,您必须再次重新分配所有列。这是使用列表理解来实现的一种方法:

df.columns = ['f_' + i if ix < 15 else i for ix, i in enumerate(df.columns)]
Run Code Online (Sandbox Code Playgroud)