将特定列转换为 Pandas 中的行名称
Convert a specific column into row names in Pandas
我有这个DF
print(df)
head0 head1 head2 head3
0 bar 32 3 100
1 bix 22 NaN NaN
2 foo 11 1 NaN
3 qux NaN 10 NaN
4 xoo NaN 2 20
我想做的是使用 head0
作为行名:
head1 head2 head3
bar 32 3 100
bix 22 NaN NaN
foo 11 1 NaN
qux NaN 10 NaN
xoo NaN 2 20
我怎样才能做到这一点?
您可以对数据框使用 set_index 方法,就像这样
df.set_index(df.head0)
只是为了扩展 nitin 的回答 set_index
:
In [100]:
df.set_index('head0')
Out[100]:
head1 head2 head3
head0
bar 32 3 100
bix 22 NaN NaN
foo 11 1 NaN
qux NaN 10 NaN
xoo NaN 2 20
请注意,此 returns df,因此您必须像这样分配回 df:df = df.set_index('head0')
或设置参数 inplace=True
:df.set_index('head0', inplace=True)
也可以直接赋值给索引:
In [99]:
df.index = df['head0']
df
Out[99]:
head0 head1 head2 head3
head0
bar bar 32 3 100
bix bix 22 NaN NaN
foo foo 11 1 NaN
qux qux NaN 10 NaN
xoo xoo NaN 2 20
请注意,执行上述操作将需要您删除无关的 'head0' 列,这可以通过调用 drop
来完成,如下所示:df.drop('head0', axis=1)
我有这个DF
print(df)
head0 head1 head2 head3
0 bar 32 3 100
1 bix 22 NaN NaN
2 foo 11 1 NaN
3 qux NaN 10 NaN
4 xoo NaN 2 20
我想做的是使用 head0
作为行名:
head1 head2 head3
bar 32 3 100
bix 22 NaN NaN
foo 11 1 NaN
qux NaN 10 NaN
xoo NaN 2 20
我怎样才能做到这一点?
您可以对数据框使用 set_index 方法,就像这样
df.set_index(df.head0)
只是为了扩展 nitin 的回答 set_index
:
In [100]:
df.set_index('head0')
Out[100]:
head1 head2 head3
head0
bar 32 3 100
bix 22 NaN NaN
foo 11 1 NaN
qux NaN 10 NaN
xoo NaN 2 20
请注意,此 returns df,因此您必须像这样分配回 df:df = df.set_index('head0')
或设置参数 inplace=True
:df.set_index('head0', inplace=True)
也可以直接赋值给索引:
In [99]:
df.index = df['head0']
df
Out[99]:
head0 head1 head2 head3
head0
bar bar 32 3 100
bix bix 22 NaN NaN
foo foo 11 1 NaN
qux qux NaN 10 NaN
xoo xoo NaN 2 20
请注意,执行上述操作将需要您删除无关的 'head0' 列,这可以通过调用 drop
来完成,如下所示:df.drop('head0', axis=1)