修复 pandas DataFrame 中的索引列

Fix index column in pandas DataFrame

我有一个 pandas DataFrame,其中包含以下数据(从 Jupyter Notebook 输出)

我可以命名第一列吗?我无法访问它,因为它似乎是行名称列。

或者提取第一个未命名的列并使用 ['accessions'] 和 ['symbols']

创建一个新的数据框

如果您只获得了该 DataFrame 而无法更改其构造方式,则可以调用 reset_index 将索引提取到列中:

In [13]: df = pd.DataFrame(data={
    ...:     'asc': [['XM', 'NM', 'XM'], ['NM', 'XM'], ['NM', 'NM', 'NM'], ['NM']],
    ...:     'sym': [{'CP', 'BT', 'MF'}, {'BC', 'CP'}, {'NT', 'IF', 'NT5'}, {'BA'}],
    ...: }, index=[('A', 'A'), ('A', 'C'), ('A', 'G'), ('A', 'U')])

In [14]: df
Out[14]:
                 asc            sym
(A, A)  [XM, NM, XM]   {BT, CP, MF}
(A, C)      [NM, XM]       {CP, BC}
(A, G)  [NM, NM, NM]  {NT, NT5, IF}
(A, U)          [NM]           {BA}

In [15]: df.reset_index(drop=False)
Out[15]:
    index           asc            sym
0  (A, A)  [XM, NM, XM]   {BT, CP, MF}
1  (A, C)      [NM, XM]       {CP, BC}
2  (A, G)  [NM, NM, NM]  {NT, NT5, IF}
3  (A, U)          [NM]           {BA}

要完全删除该索引,您可以使用 drop=True。可以通过首先用 df.index.name = 'some_name'.

命名索引来更改名称

pd.DataFrame.rename_axis

那是指数...
使用@JesseVogt 的示例数据框 df

df = pd.DataFrame(
    data={
         'asc': [['XM', 'NM', 'XM'], ['NM', 'XM'], ['NM', 'NM', 'NM'], ['NM']],
         'sym': [{'CP', 'BT', 'MF'}, {'BC', 'CP'}, {'NT', 'IF', 'NT5'}, {'BA'}],
     },
    index=[('A', 'A'), ('A', 'C'), ('A', 'G'), ('A', 'U')]
)

您可以重命名索引并使其在显示时显示在索引上方

df.rename_axis('MyName')

                 asc            sym
MyName                             
(A, A)  [XM, NM, XM]   {MF, BT, CP}
(A, C)      [NM, XM]       {BC, CP}
(A, G)  [NM, NM, NM]  {NT, IF, NT5}
(A, U)          [NM]           {BA}

或者您可以重置索引以将该信息放入适当的数据框中

df.rename_axis('MyName').reset_index()

   MyName           asc            sym
0  (A, A)  [XM, NM, XM]   {MF, BT, CP}
1  (A, C)      [NM, XM]       {BC, CP}
2  (A, G)  [NM, NM, NM]  {NT, IF, NT5}
3  (A, U)          [NM]           {BA}