这些是我的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'})
但是这两列都重命名为“ 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)
不确定这里发生了什么。
答案 0 :(得分:1)
在这一行:
df2= df1.rename(columns={df1.columns[0]:'State', df1.columns[1]:'coverage'})
df1.columns[0]
和df1.columns[1]
正在获取第0 \ 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()