2016-05-25 112 views
0

我計算大熊貓一個校正表,大熊貓校正表列名行爲

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 

這是怎麼發生的?

回答

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 
+0

啊,這是有道理的。謝謝! – Brian

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 
+0

超好用。謝謝。 – Brian