2017-01-16 5 views
2

Gibt es eine integrierte Funktion zum Umbenennen eines Pandas-Datenrahmens nach Index?Umbenennen der Dataframe-Spalte basierend auf dem Spaltenindex

Ich dachte, ich wüsste den Namen meiner Spaltenüberschriften, aber es stellt sich heraus, dass die zweite Spalte einige hexadezimale Zeichen enthält. Ich werde dieses Problem in der zweiten Spalte in der Zukunft wahrscheinlich aufgrund der Art und Weise, wie ich meine Daten erhalte, finden. Daher kann ich diese speziellen Hexadezimalzeichen nicht fest in einen Aufruf von dataframe.rename() codieren.

Gibt es eine Funktion, die entsprechend benannt werden könnte, rename_col_by_index(), die ich nicht finden konnte?

Ex:

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

Antwort

3

Sie einfach

df.columns.values[index] = "New name" 
verwenden können obwohl

oder alle vorhandenen Namen durch neue ersetzen durch

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

UPDATE: Dank @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 

oder etwas flexibler:

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

Wäre nicht die Lambda-Kraft alle Spalten durch 'Umbenennen()' zu gehen? Ein einfaches Umbenennen (columns = {df.columns [1]: 'new'}) 'würde genügen. EDIT zu Ihrer Bearbeitung: Sie brauchen immer noch nicht das Lambda. Sie können einfach das Mapping-Diktat übergeben. –

+0

@Vinzenzzzochi, sehr guter Punkt, danke! Ich habe die Antwort korrigiert – MaxU

+0

Gern geschehen! @MaxU –

Verwandte Themen