熊猫重命名柱



这些是我的dataFrame的列:

    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'})

但是这两个列被更名为"覆盖范围"

但是,当我尝试查看个人列名称时:

   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]正在抓住0th 1st列的名称的值,这是两者的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的建议):

df1.columns = ['State', 'coverage'] + df1.columns[2:].to_list()

最新更新