我有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]
但是,我上面的代码无法正常工作。
该怎么做?
答案 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;
}
希望这对您有帮助!。