Python 熊猫:为什么DataFrame.drop(labels)返回一个带有删除标签名的DataFrame

Python 熊猫:为什么DataFrame.drop(labels)返回一个带有删除标签名的DataFrame,python,pandas,Python,Pandas,当我从DataFrame中删除一些变量时,DataFrame会像我预期的那样返回,除了删除When index.name。为什么会这样 例如: 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

当我从DataFrame中删除一些变量时,DataFrame会像我预期的那样返回,除了删除When index.name。为什么会这样

例如:

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。在删除操作期间,是否仍要保留
索引.name
,因为新索引的名称仍然正确-它只是 原始索引

预期产出将是:

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

实现预期行为的一种方法是:

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

但这并不理想

您的意思是要删除
'b'
行,但保留
'b'
标签,用于带有
[5,6,7]
的行吗?不,我想删除'b'行,但将新数据框中的整个索引保持为与以前相同的名称。(即a,c将被命名为“第一”)请编辑您的问题,以包括您期望的或期望的输出。我认为在您所指的上下文中使用标签这个词很容易混淆。我想你的意思是你想保持索引
name
更新以删除标签并使用name。是-index.name是我指的。谢谢