我不认为将tuple传递给DataFrame.drop()时会引发错误,但是当传递list时它会起作用。

给定此数据框:

df = pd.DataFrame(np.arange(12).reshape(3, 4),columns=['A', 'B', 'C', 'D'])


以下作品:

df.drop(['A', 'B'], axis=1)


但是以下内容却没有:

df.drop(('A', 'B'), axis=1)


错误:

KeyError: "[('A', 'B')] not found in axis"


该错误使代码更清楚地知道要做什么,但是对我来说仍然没有意义。我在俯视什么吗?

最佳答案

tuples是不可植入且可哈希的对象,因此,您可能在数据框中使用tuples作为索引。但是,它们也是可迭代的,因此这是模棱两可的根源:使用元组时,您表示可迭代还是对象本身?由于它们是可散列的,因此pandas会解释为后者,并在您的情况下尝试查找以元组('A', 'B')为名称的列。

另一方面,lists不可哈希,因为它们是可变的,并且您不能将它们用作索引/列。因此,这里没有歧义:当您传递列表时,总是表示可迭代。

关于python - DataFrame.drop适用于列表,但不适用于元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57366416/

10-12 20:40