Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重命名30个数据帧列_Python_Dataframe - Fatal编程技术网

Python 重命名30个数据帧列

Python 重命名30个数据帧列,python,dataframe,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.colu

我有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]
但是,我上面的代码不能正常工作


怎么做

为什么不这样做呢

# 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]]

希望这对你有帮助

为什么不这样做呢

# 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]]

希望这对你有帮助

您试图以不起作用的名称使用数据帧本身。我假设您试图使用数据帧的名称。您也没有缩短代码中的任何内容,只是将其延长。我想提出如下建议:

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]

您试图以不起作用的名称使用数据帧本身。我假设您试图使用数据帧的名称。您也没有缩短代码中的任何内容,只是将其延长。我想提出如下建议:

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]
IIUC

IIUC


@WeNYoBen你能看看这个吗?@WeNYoBen你能看看这个吗?我试过你的方法,我得到了如下结果:
df[1]。columns=['.\u-df\u-df1']
。我期待的是
df[1]。columns=['M1\u Pmax']
。你知道哪里错了吗?你更新的答案给了我以下输出:
df[1]。columns=['M1\u fdf1']
。我期待的是
df[1]。columns=['M1\u Pmax']
这意味着这
df1.columns=['123.ABC\u xyz\u 1.CB\u 1.S\u 01.M\u 01.Pmax']
不是真的。告诉我实际的列名是什么。我尝试了你的方法,得到了以下结果:
df[1]。columns=[''.\u-df\u-df1']
。我期待的是
df[1]。columns=['M1\u Pmax']
。你知道哪里错了吗?你更新的答案给了我以下输出:
df[1]。columns=['M1\u fdf1']
。我期待的是
df[1]。columns=['M1\u Pmax']
这意味着这
df1.columns=['123.ABC\u xyz\u 1.CB\u 1.S\u 01.M\u 01.Pmax']
不是真的。告诉我列名到底是什么。这是一个费力的过程。需要简单。这是一个费力的过程。需要简单。我得到以下错误:
I.columns=I.columns.str.split('..).str[-2:].str.join(''..str.replace('.'').AttributeError:'int'对象没有属性'columns'
@Msquare是否列出dfs列表?是的!它正在工作。我将得到以下输出:
df[1]。columns=['fdf1']
。但是我期望像这样的东西
df[1].columns=['M01']
我得到了以下错误:
I.columns=I.columns.str.split('..).str[-2:].str.join('').str.replace('','')AttributeError:'int'对象没有属性'columns'
@Msquare是df列表吗?是的!它正在工作。我将得到以下输出:
df[1]。columns=['fdf1']
。但是我期待类似这样的东西
df[1]。columns=['M01']