2017-01-16 146 views
2

是否有一個內置的函數來按索引重命名熊貓數據框?根據列索引重命名Dataframe列

我以爲我知道我的列標題的名稱,但事實證明,第二列中有一些十六進制字符。根據我收到我的數據的方式,將來可能會在第2列中遇到此問題,所以我無法將這些特定的十六進制字符硬編碼爲dataframe.rename()調用。

是否有一個函數可以正確命名爲rename_col_by_index(),我找不到它?

例:

>>> df = pd.DataFrame({'a':[1,2], 'b':[3,4]}) 
>>> df.rename_col_by_index(1, 'new_name') 
>>> df 
    a new_name 
0 1   3 
1 2   4 

回答

3

您可以簡單地使用

df.columns.values[index] = "New name" 

df.columns = ["col1", "col2"] 
1

UPDATE:感謝@Vincenzzzochi

In [138]: df.rename(columns={df.columns[1]: 'new'}) 
Out[138]: 
    a new c 
0 1 3 5 
1 2 4 6 

In [140]: df 
Out[140]: 
    a b c 
0 1 3 5 
1 2 4 6 

或更靈活一點:

In [141]: mapping = {df.columns[0]:'new0', df.columns[1]: 'new1'} 

In [142]: df.rename(columns=mapping) 
Out[142]: 
    new0 new1 c 
0  1  3 5 
1  2  4 6 
+1

替換所有新的現有名稱會不會拉姆達力的所有列要經過'重命名()'有關係嗎?一個簡單的'rename(columns = {df.columns [1]:'new'})'就足夠了。編輯到你的編輯:你仍然不需要lambda。你可以通過'映射'字典。 –

+0

@Vincenzzzochi,非常好的一點,謝謝!我已經更正了答案 – MaxU

+0

不客氣! @MaxU –