我正在尝试通过自动规范化到一个术语来在数据框中加载时自动读取行。以下代码有效:
import pandas as pd
df=pd.read_csv('Test.csv', encoding = "ISO-8859-1", index_col=0)
firstCol=['FirstName','First Name','Nombre','NameFirst', 'Name', 'Given name', 'given name', 'Name']
df.rename(columns={typo: 'First_Name' for typo in firstCol}, inplace=True)
addressCol=['Residence','Primary Address', 'primary address' ]
df.rename(columns={typo: 'Address' for typo in addressCol}, inplace=True)
computerCol=['Laptop','Desktop', 'server', 'mobile' ]
df.rename(columns={typo: 'Address' for typo in computerCol}, inplace=True)
是否有更有效的循环或重写方式,以减少冗余?
答案 0 :(得分:1)
我能想到的唯一方法就是通过一次性建立一个完整的字典,将其减少到一个df.rename
操作,例如:
replacements = {
'Name': ['FirstName','First Name','Nombre','NameFirst', 'Name', 'Given name', 'given name', 'Name'],
'Address': ['Residence','Primary Address', 'primary address' ],
#...
}
df.rename(columns={el:k for k,v in replacements.iteritems() for el in v}, inplace=True)
所以它应该在函数调用开销方面更有效率,但我个人认为它具有dict
个密钥更具可读性,这是“to”值,值为“from”要替换。