熊猫无法删除索引列上的列名

时间:2020-11-03 01:15:23

标签: python pandas

编辑:对问题进行了大量编辑以创建可复制的示例。

我已经加载了一个数据帧,在该数据帧中行和列被交换了,因此第一步,我将其转置:

df = pd.DataFrame({"A": ['A1', 'A2', 'A3'], 
                   "B": ['B1', 'B2', 'B3'], 
                   "C": ['C1', 'C2', 'C3']})

enter image description here

df = df.transpose()

enter image description here

然后使用数据框中的一行设置列的名称:

# take the first row of df and set its values as col names
df.columns = df.iloc[0]
df.drop(df.index[0], inplace=True)  # remove the first row

enter image description here

这使我的索引列称为“ A”,但我想删除/重命名它。

将索引名设置为None不会执行任何操作,索引名重命名不变。:

df.index.name = None

在将其设置为字符串时会创建索引名称,但不会删除第一个(保留在顶部)

df.index.name = "Foo"

enter image description here

我坚信这是一个多索引问题,但是df.index.names为空。

问题:如果不是索引列名称,“ A”代表什么,以及如何删除/重命名?

编辑:我可以按照BEN_YO answer below删除它,但是我不确定为什么会删除它。

2 个答案:

答案 0 :(得分:1)

它将起作用,您可以尝试将其分配回来,它也是column名称而不是index名称

df = df.rename_axis(None, axis="columns")

答案 1 :(得分:0)

问题:如果不是索引列名称,“ A”代表什么,以及如何删除/重命名?

我的术语可能不正确,但我相信它是列轴的名称。

看看这个示例的调整版本:

import pandas as pd

df = pd.DataFrame({"A": ['A1', 'A2', 'A3'],
                   "B": ['B1', 'B2', 'B3'],
                   "C": ['C1', 'C2', 'C3']})

print(df, end='\n\n')

df = df.transpose()
print(df, end='\n\n')

# take the first row of df and set its values as col names
df.columns = df.iloc[0]
print(df, end='\n\n')

df = df.iloc[1:]
print(df, end='\n\n')

print(f'index: {df.index}\ncolumns: {df.columns}')

输出:

    A   B   C
0  A1  B1  C1
1  A2  B2  C2
2  A3  B3  C3

    0   1   2
A  A1  A2  A3
B  B1  B2  B3
C  C1  C2  C3

A  A1  A2  A3
A  A1  A2  A3
B  B1  B2  B3
C  C1  C2  C3

A  A1  A2  A3
B  B1  B2  B3
C  C1  C2  C3

index: Index(['B', 'C'], dtype='object')
columns: Index(['A1', 'A2', 'A3'], dtype='object', name='A')