如果我想使用pandas更改数据框中的变量名,我可以在不使用pandas.df.rename()函数的情况下更改名称,但使用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
我需要用“_”填充上面数据框中变量名的空格,并且所有变量名都应该是小写的
答案 0 :(得分:3)
函数applymap
用于更改DataFrame
元素的所有值,因此更改列名是另一种方法。
我认为您需要list comprehension
python str
函数lower
和replace
(如果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
函数lower
和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
编辑:
如果需要更改applymap
列名称,则不可能,因为Index
(column 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
答案 1 :(得分: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(' ', '_'))
答案 2 :(得分:1)
试试这个:
df.applymap(lambda x: str(x).lower().replace(' ', '_'))
applymap()
会将数据中的空格更改为下划线。如果你想在列中更改它,那么你可以采取以色列或约翰的答案。
答案 3 :(得分:1)