新的编程。我正在使用康达python3.9与Pandas1.5.2。运行jupyter笔记本一些数据处理。我有两行
buffer_status.set_axis(['项目ID','更新时间','项目名称'],轴='列',位置=真)buffer_status.sort_values(按='项目ID',升序=假,位置=真)
它警告我set_axis 'inplace'关键字已过时,将在未来版本中删除。请改用obj = obj.set_axis(..., copy=False)
。
但是它起作用了,所以我听从了他们的建议,更换到位
buffer_status.set_axis(['ProjectID','UpdatedAt','ProjectName'],axis='columns', copy=False)
buffer_status.sort_values(by='ProjectID', ascending=False, inplace=True)
它给出了以下错误(只是复制他们的亮点)
-> 35 buffer_status.sort_values(by='ProjectID', ascending=False, inplace=True)
-> 6909 k = self._get_label_or_level_values(by, axis=axis)
-> 1850 raise KeyError(key)
1852 # Check for duplicates
1853 if values.ndim > 1:
你知道为什么set_axis copy=False不适用于sort_values吗?
1条答案
按热度按时间31moq8wy1#
你没有完全听从他们的建议,他们提到obj = obj.DoSomething():
因此它应该是:
这样,变量
buffer_status
实际上被改变了,因为你只是在原处移除,变量没有“在其原处”被修改,所以你必须将改变分配到某个地方,或者是一个新变量,或者是随后被更新的相同变量。因此,set_axis代码当前正在执行,但结果未被存储,因此buffer_status没有列ProjectID,这就是为什么会出现KeyError(键ProjectID不在列中)。