我有一个带有以下数据的pandas DataFrame(来自Jupyter Notebook的输出)
无论如何,我可以命名第一列吗?我无法访问它,因为它似乎是一个行名列。
或以其他方式提取第一个未命名的列,并使用['加入']和['符号']
制作新的数据框答案 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}