2017-01-29 13 views
3

如果我想使用pandas更改数据框中的变量名称,可以更改名称而不使用pandas.df.rename()函数,但使用applymap() 例如我可以使用applymap来更改数据帧的变量名称

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 

我需要填写空间中与“_”和所有的变量名的上述数据帧中的变量名应该是小写

回答

3

功能applymap用于改变DataFrame元件的所有值因此,对于更改列名是另一种方法。

我认为你需要list comprehensionpython str功能lowerreplace(它不一样,如果NaN工作):

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 

或用pandas str功能lowerreplace解决方案:

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 

编辑:

如果需要更改列名称applymap,这是不可能的,因为此功能不适用于Indexcolumn names)。但如果真的想要类似的东西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

我不知道df.columns()给我们一个列表列名。感谢信息,学到了很多!我将使用map()。 –

3

你可以用3种方法做到这一点。

改写列

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

使用字符串方法

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

使用rename

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

试试这个:

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

applymap()将更改数据中下划线的空格。如果你想改变它的列,那么你可以采取jezrael或约翰的答案。

enter image description here

+0

我猜OP想要重新命名列,但我不是100%确定的。 'applymap'在OP的问题上看起来有点误导... – MaxU

1

严重......挑@ JohnGalt的答案。 rename是要走的路。

但是,因为我想尝试添加一些其他的答案还没有涉及尚未:

使用split然后join

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

enter image description here

分割,并加入了更多替代的优势比1下划线的空格_

相关问题