重命名30个dataframes列

2024-10-05 11:42:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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]

但是,我上面的代码不能正常工作。你知道吗

怎么做?你知道吗


Tags: columns数据nameindfforcollist
3条回答

为什么不这样做呢?你知道吗

# List of all dataframes
df_list = [df1,df2,....,df30]
# List of Columns names for all dataframes
colum_names =[['M1Pmax'],['M2Pmax'],...., ['M30Pmax']]

for i in range(len(df_list)):
    df_list[i].columns = [colum_names[i]]

希望这对你有帮助!。你知道吗

IIUC公司

l=[]

for i in df_list:

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

你试图用数据帧本身的名字,这是行不通的。我假设您试图使用数据帧的名称。您也没有缩短代码中的任何内容,只是将其延长。我建议如下:

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]

相关问题 更多 >

    热门问题