pandas corr表列名行为

时间:2016-05-25 21:22:51

标签: python numpy pandas

我在熊猫中计算一个corr表,

df = pd.DataFrame(np.random.rand(6, 6))

c = df.corr()

但是当我尝试更改列的名称时,

c.columns.name = 'col'

我明白了,

col         0         1         2         3         4         5
col                                                            
0    1.000000  0.051975 -0.171113  0.196975  0.057700 -0.008229
1    0.051975  1.000000 -0.055077 -0.298845 -0.642585 -0.465581
2   -0.171113 -0.055077  1.000000 -0.591092  0.051866  0.584618
3    0.196975 -0.298845 -0.591092  1.000000 -0.327067 -0.059618
4    0.057700 -0.642585  0.051866 -0.327067  1.000000  0.359508
5   -0.008229 -0.465581  0.584618 -0.059618  0.359508  1.000000

此外,

print c.index.name

col

为什么会这样?

2 个答案:

答案 0 :(得分:1)

如果你刚刚重命名索引,你可以这样做:

In [235]: c.rename_axis('col')
Out[235]:
            0         1         2         3         4         5
col
0    1.000000 -0.406438  0.715564 -0.354630 -0.313099 -0.723027
1   -0.406438  1.000000 -0.512059 -0.369779 -0.201501  0.445913
2    0.715564 -0.512059  1.000000  0.300887  0.105123 -0.558040
3   -0.354630 -0.369779  0.300887  1.000000  0.750460  0.295423
4   -0.313099 -0.201501  0.105123  0.750460  1.000000 -0.004003
5   -0.723027  0.445913 -0.558040  0.295423 -0.004003  1.000000

答案 1 :(得分:0)

当您执行corr方法并生成相关矩阵时,最终会得到一个方形矩阵,其中列与行相同。将indexcolumns分配为同一个对象很方便。因此c.indexc.columns指向同一件事。要打破这个链接,你需要制作一个自己的副本。

c.index = c.index.copy()

c.columns.name = 'col'

print c

col         0         1         2         3         4         5
0    1.000000 -0.208454  0.015920  0.397915  0.283203 -0.433138
1   -0.208454  1.000000  0.384982 -0.881456  0.037897  0.430109
2    0.015920  0.384982  1.000000 -0.308990 -0.744234 -0.078394
3    0.397915 -0.881456 -0.308990  1.000000 -0.149954 -0.690244
4    0.283203  0.037897 -0.744234 -0.149954  1.000000  0.325190
5   -0.433138  0.430109 -0.078394 -0.690244  0.325190  1.000000