Pandas 重命名列

Pandas 重命名列,pandas,rename,Pandas,Rename,以下是我的数据框的列: col_list= df1.columns Out: Index([ nan, nan, 'Estimate', 'Margin of Error', 'Percent', 'Margin of Error', 'Estimate', 'Margin of Error', 'Percent', 'Margin of

以下是我的数据框的列:

    col_list= df1.columns
    Out:

    Index([              nan,               nan,        'Estimate',
   'Margin of Error',         'Percent', 'Margin of Error',
          'Estimate', 'Margin of Error',         'Percent',
   'Margin of Error',        'Estimate', 'Margin of Error',
           'Percent', 'Margin of Error',        'Estimate',
   'Margin of Error',         'Percent', 'Margin of Error',
          'Estimate', 'Margin of Error',         'Percent',
   'Margin of Error',        'Estimate', 'Margin of Error',
           'Percent', 'Margin of Error',        'Estimate',
   'Margin of Error',         'Percent', 'Margin of Error',
          'Estimate', 'Margin of Error',         'Percent',
   'Margin of Error',        'Estimate', 'Margin of Error',
           'Percent', 'Margin of Error',        'Estimate',
   'Margin of Error',         'Percent', 'Margin of Error'],
  dtype='object', name=3)
我正在尝试重命名前两列的名称:

    df2= df1.rename(columns={df1.columns[0]:'State', df1.columns[1]:'coverage'})
但这两列都被重命名为“coverage”

但是,当我尝试查看个人列名时,如下所示:

   col[0]
   Out: nan
   col[1]
   Out:nan
   col[3]
   Out: 'Estimate'
它解析到正确的位置。 即使我尝试将第一列重命名为

    df2= df1.rename(columns={df1.columns[0]:'State'})
第一列名称更改为“状态”:

    Index(['State', 'State', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error', 'Estimate', 'Margin of Error', 'Percent',
   'Margin of Error'],
  dtype='object', name=3)
不确定这里发生了什么。

在这行:

df2= df1.rename(columns={df1.columns[0]:'State', df1.columns[1]:'coverage'})
df1.columns[0]
df1.columns[1]
正在获取第0\1列的名称值,这两个列都是
nan
。这相当于:

df2= df1.rename(columns={'nan':'State', 'nan':'coverage'})
由于“nan”键出现两次,因此第二个赋值优先

解决方法是一次重命名所有列:

col_list= df1.columns.to_list()
col_list[0] = 'State'
col_list[1] = 'coverage'
df1.columns = col_list
或在一条班轮中(按照@IWHKYB的建议):


前两列中,nan为列(相同的值),我给您的解决方案是通过执行以下操作重新分配所有列:df.columns=['State','coverage']+df.columns[2:]df1.columns=['State','coverage']+df1.columns[2:]给我这个错误:ValueError:Length失配:预期的轴有42个元素,新值包含40个元素。另外,我在前面尝试了col_list[0]=“State”。结果是:TypeError:Index不支持可变操作,因此,我采用了相同的逻辑并将这些列分配给一个列表:df1。columns=[“状态”、“覆盖率”、“估计”、“误差幅度”、“百分比”、“误差幅度”、“估计”、“误差幅度”、“百分比”、“误差幅度”…]啊索引的行为与列表并不完全相同。编辑以将
添加到\u list()
调用。
df1.columns = ['State', 'coverage'] + df1.columns[2:].to_list()