dataframe,从列表中设置索引

van*_*lay 10 python pandas

从列表创建数据帧时,是否可以将索引设置为其中一个值?

import pandas as pd

tmp = [['a', 'a1'], ['b',' b1']]

df = pd.DataFrame(tmp, columns=["First", "Second"])

        First  Second
0          a   a1
1          b   b1
Run Code Online (Sandbox Code Playgroud)

以及我希望它看起来如何:

        First  Second
a          a   a1
b          b   b1
Run Code Online (Sandbox Code Playgroud)

tdy*_*tdy 13

set_axis

\n

要将任意值设置为索引,最佳实践是使用set_axis

\n
df = df.set_axis([\'idx1\', \'idx2\'])\n\n#       First  Second\n# idx1      a      a1\n# idx2      b      b1\n
Run Code Online (Sandbox Code Playgroud)\n
\n

set_index(列表与数组)

\n

也可以将任意值传递给set_index,但请注意传递列表与数组之间的区别:

\n\n
\n

为什么不df.index直接修改呢?

\n

直接修改属性很好,也经常使用,但使用方法有其优点:

\n\n


Ale*_*der 10

>>> pd.DataFrame(tmp, columns=["First", "Second"]).set_index('First', drop=False)
      First Second
First             
a         a     a1
b         b     b1
Run Code Online (Sandbox Code Playgroud)


小智 10

在将其分配给索引之前将其更改为列表

df.index = list(df["First"])
Run Code Online (Sandbox Code Playgroud)


rag*_*esz 6

如果您不想要索引名称:

df = pd.DataFrame(tmp, columns=["First", "Second"], index=[i[0] for i in tmp])
Run Code Online (Sandbox Code Playgroud)

结果:

  First Second
a     a     a1
b     b     b1
Run Code Online (Sandbox Code Playgroud)