首页 > 解决方案 > Python Dataframes:数据列被错误地读取为行索引,并且 reset_index() 产生错误的输出

问题描述

我目前有一个名为的数据框df,它的示例输出如下:

在此处输入图像描述

我相信该Name列正在作为我不想要的行索引被读入。我想要的数据框如下所示:

在此处输入图像描述

因此,我尝试了以下代码:

df = df.reset_index()

但是输出是错误的......它看起来像这样:

在此处输入图像描述

如何获得我想要的 df 输出?

标签: pythonpandasdataframeindexingrow

解决方案


您的数据框:

>>> df
Name    Score    Age Address
Abbott  value  value   value
Aaron   value  value   value
Johnny  value  value   value
Paul    value  value   value
Sam     value  value   value

检查行和列索引:

>>> df.index
Index(['Abbott', 'Aaron', 'Johnny', 'Paul', 'Sam'], dtype='object')

>>> df.columns
Index(['Score', 'Age', 'Address'], dtype='object', name='Name')

如您所见,Name不是索引名称而是数据列的名称:

>>> print(df.index.name)
None

>>> print(df.columns.named)
Name

现在交换名称:

>>> df.index.name, df.columns.name = df.columns.name, df.index.name

>>> print(df.index.name)
Name

>>> print(df.columns.name)
None

>>> df
        Score    Age Address
Name                           # <- name of data index
Abbott  value  value   value
Aaron   value  value   value
Johnny  value  value   value
Paul    value  value   value
Sam     value  value   value

>>> df.reset_index()
     Name  Score    Age Address
0  Abbott  value  value   value
1   Aaron  value  value   value
2  Johnny  value  value   value
3    Paul  value  value   value
4     Sam  value  value   value

为了解决这个问题,@QuangHoang 建议你:

>>> df.rename_axis(columns=None, index='Name').reset_index()
     Name  Score    Age Address
0  Abbott  value  value   value
1   Aaron  value  value   value
2  Johnny  value  value   value
3    Paul  value  value   value
4     Sam  value  value   value

推荐阅读