Egi*_*ila 13 python python-3.x pandas
我有这个Dataframe:
import pandas as pd
df = pd.DataFrame({'Hugo' : {'age' : 21, 'weight' : 75},
'Bertram': {'age' : 45, 'weight' : 65},
'Donald' : {'age' : 75, 'weight' : 85}}).T
df.index.names = ['name']
age weight
name
Bertram 45 65
Donald 75 85
Hugo 21 75
Run Code Online (Sandbox Code Playgroud)
我想将索引更改为列'age':
df.set_index('age', inplace=True)
weight
age
45 65
75 85
21 75
Run Code Online (Sandbox Code Playgroud)
旧索引列名称丢失.有没有办法在不丢失原始索引列的情况下更改索引并再次将旧列作为"普通"列,这样看起来像这样?
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Run Code Online (Sandbox Code Playgroud)
jez*_*ael 15
reset_index先使用然后set_index:
df = df.reset_index().set_index('age')
print (df)
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Run Code Online (Sandbox Code Playgroud)
添加append=True和reset_index
df.set_index('age', append=True).reset_index(level=0)
Out[80]:
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Run Code Online (Sandbox Code Playgroud)
您的 DataFramedf有name(= 'Bertram', 'Donald', 'Hugo') 作为索引
也就是说,你df是:
age weight
name
Bertram 45 65
Donald 75 85
Hugo 21 75
Run Code Online (Sandbox Code Playgroud)
您可以将指数(转换name)为您的数据帧中的新列df使用.reset_index()方法。
df.reset_index(inplace=True)
Run Code Online (Sandbox Code Playgroud)
name 成为一列,新索引是标准的默认整数索引:
你的 df 现在看起来像这样:
Out[1]:
name age weight
0 Bertram 45 65
1 Donald 75 85
2 Hugo 21 75
Run Code Online (Sandbox Code Playgroud)
现在,您可以age使用该.set_index()方法更改索引。
df.set_index('age',inplace=True)
Run Code Online (Sandbox Code Playgroud)
df就是现在:
Out[2]:
name weight
age
45 Bertram 65
75 Donald 85
21 Hugo 75
Run Code Online (Sandbox Code Playgroud)
正如@jezrael上面指出的,你可以一步完成,而不是两步,像这样:
df = df.reset_index().set_index('age')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9377 次 |
| 最近记录: |