python - Python Dataframes:数据列被错误地读取为行索引,并且 reset_index() 产生错误的输出
问题描述
我目前有一个名为的数据框df
,它的示例输出如下:
我相信该Name
列正在作为我不想要的行索引被读入。我想要的数据框如下所示:
因此,我尝试了以下代码:
df = df.reset_index()
但是输出是错误的......它看起来像这样:
如何获得我想要的 df 输出?
解决方案
您的数据框:
>>> 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
推荐阅读
- arrays - SAS中多维数组的每个切片的MAX
- audiokit - 音序器停止时 AKMIDISampler 崩溃
- angular - 如何在打字稿中对多维对象中的数据求和?
- java - 避免 Java 接口中的样板
- configuration - 在 Wildfly 10 中启动 JMS 桥的问题
- chisel - Chisel3 每个时钟周期比较 UInt 位 [运行长度编码器]
- angular - 如何使用来自不同端点的不同数据渲染组件
- javascript - 为什么我的动画无法通过 setinterval 清除
- scala - 返回内部类对象的列表
- php - PHP后期绑定静态与私有__construct