2015-11-20 84 views
3
如何重命名列標題

我有以下的數據幀使用索引編號在熊貓

import pandas as pd 
df = pd.DataFrame({ 'gene':["foo", 
          "lal", 
          "qux", 
          "woz"], 'cell1':[5,9,1,7], 'cell2':[12,90,13,87]}) 
df = df[["gene","cell1","cell2"]] 
df 

,看起來像這樣:

gene cell1 cell2 
0 foo  5  12 
1 lal  9  90 
2 qux  1  13 
3 woz  7  87 

我想要做的是改變列名第一和第三列。 從而造成:

X cell1 Y 
    foo  5 12 
    lal  9 90 
    qux  1 13 
    woz  7 87 

我如何能做到用02索引編號。

我能做到這一點

df.columns = ["X","cell1","Y"] 

但它不使用列索引。

回答

2
df.columns._data[0] = 'X' 

df.columns._data[2] = 'Y' 

>>> df 
    X cell1 Y 
0 foo  5 12 
1 lal  9 90 
2 qux  1 13 
3 woz  7 87 

一般注意事項:有疑問時,看一個類的__dict__變量:

>>> df.columns.__dict__ 
{'freq': None, '_cache': {'dtype': dtype('O'), 'is_all_dates': False, 'is_unique': True, 'inferred_t 
ype': 'string', '_engine': <pandas.index.ObjectEngine object at 0x000000000882DC48>}, '_data': array 
(['gene', 'cell1', 'cell2'], dtype=object), '_id': <object object at 0x00000000028F4720>, 'name': No 
ne} 
+2

帶有下劃線的名字通常表示「嗨,假裝我不在這裏!」。它不是公共API的一部分,所以除非它被記錄爲可以使用,否則它可能會在未來消失並根據它破壞代碼。訪問這樣的「私有」屬性有時會很有用,但是有一種方法可以通過公共API來實現,所以我認爲這不是一個有保證的情況。 – jme

+0

總是不建議編輯私有屬性 –

4

請從列的列表,修改列表,然後重新分配列表的列屬性:

>>> cols = list(df.columns) 
>>> cols[0] = 'X' 
>>> cols[2] = 'Y' 
>>> df.columns = cols 

可替換地,一個班輪:

>>> df.rename(columns={'cell1': 'X', 'gene': 'Y'}, inplace=True)