2017-01-29 5 views
3

Wenn ich Variablennamen in einem Datenrahmen mit Pandas ändern möchte, kann ich die Namen ändern, ohne pandas.df.rename() -Funktion zu verwenden, sondern mit applyMap() Zum Beispielkann ich applymap verwenden, um Variablennamen des Datenrahmens zu ändern

Registrar Enrolment Agency State District Sub District Pin Code Gender 
Allahabad Bank Tera Software Ltd Jharkhand Ranchi Namkum 834003 M 
Allahabad Bank Tera Software Ltd Jharkhand Ranchi Ranchi 834004 F 
Allahabad Bank Vakrangee Softwares Limited Gujarat Surat Nizar 394380 M 

ich brauche Räume in den Variablennamen in der obigen Datenrahmen zu füllen mit „_“ und alle Variablennamen sollten alle Werte von DataFrame Element in klein~~POS=TRUNC sein wird für den Wandel

Antwort

3

Funktion applymap verwendet -Wise, also für die Änderung Spalte Namen sind eine andere Methode.

Ich glaube, Sie brauchen list comprehension mit python str Funktion lower und replace (es nicht, wenn NaN funktioniert):

df.columns = [col.lower().replace(' ', '_') for col in df.columns] 
print (df) 
     registrar  enrolment_agency   state district sub_district \ 
0 Allahabad Bank Tera Software Ltd  Jharkhand Ranchi  Namkum 
1 Allahabad Bank Tera Software Ltd  Jharkhand Ranchi  Ranchi 
2 Allahabad Bank Vakrangee Softwares Limited Gujarat Surat  Nizar 

    pin_code gender 
0 834003  M 
1 834004  F 
2 394380  M 

Oder Lösung mit pandas str Funktion lower und replace:

df.columns = df.columns.str.replace(' ', '_').str.lower() 
print (df) 
     registrar  enrolment_agency   state district sub_district \ 
0 Allahabad Bank Tera Software Ltd  Jharkhand Ranchi  Namkum 
1 Allahabad Bank Tera Software Ltd  Jharkhand Ranchi  Ranchi 
2 Allahabad Bank Vakrangee Softwares Limited Gujarat Surat  Nizar 

    pin_code gender 
0 834003  M 
1 834004  F 
2 394380  M 

EDIT:

Wenn die Spaltennamen durch applymap geändert werden müssen, ist dies unmöglich, da diese Funktion nicht für Index (column names) implementiert ist. Aber wenn wirklich wollen etwas ähnliches verwenden map:

df.columns = df.columns.map(lambda col: col.lower().replace(' ', '_')) 
print (df) 
     registrar  enrolment_agency   state district sub_district \ 
0 Allahabad Bank Tera Software Ltd  Jharkhand Ranchi  Namkum 
1 Allahabad Bank Tera Software Ltd  Jharkhand Ranchi  Ranchi 
2 Allahabad Bank Vakrangee Softwares Limited Gujarat Surat  Nizar 

    pin_code gender 
0 834003  M 
1 834004  F 
2 394380  M 
+0

Ich weiß nicht, dass df.columns() uns eine Liste geben Spaltennamen. Danke für die Informationen, viel gelernt !! Ich werde map() verwenden. –

3

Sie, dass in drei Arten tun könnte.

die Spalten Umschreiben

df.columns = [x.lower().replace(' ', '_') for x in df.columns] 

String-Methoden verwenden

df.columns = df.columns.str.lower().str.replace(' ', '_') 

Mit rename

df.rename(columns=lambda x: x.lower().replace(' ', '_')) 
1

starten:

df.applymap(lambda x: str(x).lower().replace(' ', '_')) 

applymap() werden die Leerzeichen in den Daten zu unterstreichen. Wenn Sie es in Spalten ändern möchten, können Sie die Antwort von Jezrael oder John nehmen.

enter image description here

+0

Ich denke OP möchte Spalten umbenennen, aber ich bin nicht 100% sicher. 'applymap' sieht in der OP-Frage etwas irreführend aus ... – MaxU

1

Ernsthaft ... @ Antwort des JohnGalt holen. rename ist der Weg zu gehen.

Aber weil ich gerne mal ausprobieren etwas andere Antworten hinzufügen noch nicht abgedeckt:

Verwenden split dann join

df.columns = df.columns.str.lower().str.split().str.join('_') 
df 

enter image description here

Split und kommen Sie hat einen Vorteil von mehr ersetzen als 1 Leerzeichen mit Unterstrich _

Verwandte Themen