修复pandas DataFrame中的索引列

时间:2017-04-14 18:21:59

标签: python pandas dataframe bioinformatics

我有一个带有以下数据的pandas DataFrame(来自Jupyter Notebook的输出)

enter image description here

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

或以其他方式提取第一个未命名的列,并使用['加入']和['符号']

制作新的数据框

2 个答案:

答案 0 :(得分:2)

如果您只获得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'命名索引来更改名称。

答案 1 :(得分:1)

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}