是否确保 df.corr() 列的顺序

Is the ordered of df.corr() columns ensured

在Pandas中我们可以用.corr()生成相关矩阵。我的问题很简单:是否保留了原始数据框的列顺序?从我的测试来看似乎是这样,但我想确定一下。

我问是因为我在 Python 3.7.3 上,字典维护插入顺序。我不知道当前的问题是否与此相关,但如果 Pandas 在幕后使用字典,那么很可能 corr() 是按预期在 Python 3.6 中排序的+ 但不是低版本。

嗯,如果你看source code for corr,下面的代码是在开头:

numeric_df = self._get_numeric_data()
        cols = numeric_df.columns
        idx = cols.copy()
        mat = numeric_df.values

正如您在此处看到的,只要方法 _get_numeric_data 保持顺序,corr 也应该保持顺序。深入研究 _get_numeric_data,您可以看到 this block:

self._consolidate_inplace()
return self.combine([b for b in self.blocks if b.is_numeric], copy)

_consolidate_inplace 在元组中构建数据帧的合并部分(顺序保留),而 _get_numeric_data 使用列表理解将此元组过滤为仅数字块(顺序仍保留)。

更重要的是,pandas 实际上并没有为您的列名使用字典。 columns 本身是 Index class 的 just instances,它(来自文档字符串)是有序的。

因此,回答您的问题:是的,顺序在 corr 中得到保证,因为它获取和遍历数据框列的方式也保留了顺序。