Pandas:为什么DataFrame.drop(labels)返回的DataFrame移除了标签名

0 投票
1 回答
3101 浏览
提问于 2025-04-17 17:15

当我从一个数据框(DataFrame)中删除一些变量时,返回的结果和我预期的一样,除了当索引的名字被去掉时。这是为什么呢?

举个例子:

test = pd.DataFrame([[1,2,3],[3,4,5],[5,6,7]], index=['a','b','c'], columns=['d','e','f'])
test

Out[20]:
second  d   e   f
first           
a   1   2   3
b   3   4   5
c   5   6   7
#test.index.name = first
#test.columns.name=second
In [27]:

test.drop(['b'])

Out[27]:
second  d   e   f
a   1   2   3
c   5   6   7

在删除'b'之后,返回的数据框的 (index.name) 不再是'first',而是变成了None。

问题1:这是因为 .drop() 方法返回了一个新的数据框,它的索引对象默认没有名字吗?
问题2:有没有办法在删除操作中保留 index.name,因为新的索引仍然是正确命名的,只是它是原始索引的一个子集。

期望的输出应该是:

 Out[20]:
    second  d   e   f
    first           
    a   1   2   3
    c   5   6   7

1 个回答

1

实现你想要的效果有一种方法是:

row_name = test.index.name
test = test.drop('b')
test.index.name = row_name

不过,这个方法并不是最理想的。

撰写回答