Python Dataframes:数据列被误读为行索引并且 reset_index() 产生错误输出
Python Dataframes: Data Column Being Read in As Row Index Mistakenly and reset_index() Produces Wrong Output
我目前有一个名为 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
我目前有一个名为 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