修复 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}
我有一个 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}