重命名30个数据框列

时间:2019-07-14 21:20:40

标签: python dataframe

我有30个数据帧,每个df都有一列。列名称很大,如下所示:

df1.columns =  ['123.ABC_xyz_1.CB_1.S_01.M_01.Pmax']
df2.columns =  ['123.ABC_xyz_1.CB_1.S_01.M_02.Pmax']
..
df30.columns =  ['123.ABC_xyz_1.CB_1.S_01.M_30.Pmax']

我想修剪他们的名字,最后我希望他们像下面这样:

df1.columns =  ['M1Pmax']
df2.columns =  ['M2Pmax']
..
df30.columns =  ['M30Pmax']

我想到了这样的东西:

df_list = [df1,df2,....,df30]
for i,k in enumerate(df_list):
    df_list[i].columns = [col_name+'_df[i]{}'.format(df_list[i]) for col_name in df_list[i].columns]

但是,我上面的代码无法正常工作。

该怎么做?

3 个答案:

答案 0 :(得分:1)

您正试图以无法使用的名称使用数据框本身。我假设您正在尝试使用数据框的名称。您也不会缩短代码中的任何内容,而只是使其更长。我建议像这样:

df_list = [df1,df2,....,df30]
for i, k in enumerate(df_list):
    df_list[i].columns = ['M{}_'.format(i)+col_name.split(".")[-1] for col_name in df_list[i].columns]

答案 1 :(得分:1)

IIUC

l=[]

for i in df_list:

  i.columns=i.columns.str.split('.').str[-2:].str.join('').str.replace('_','')
  l.append(i)

答案 2 :(得分:0)

为什么不这样做呢?

export class Menu {
    categories: Array<Category>;
}

class Category {
    // ?
}

// Details will always be the same
class Details {
    name: string;
    description: string;
    img: string;
    price: string;
}

希望这对您有帮助!。