我正在尝试运行一个代码,使用apply重命名一个或多个列中的字段。。。以与此类似的方式link example
然而,我并不想成功。 我注意到,如果只使用一列,则可以运行函数重命名
import pandas as pd
df = pd.DataFrame({'Município': {0:'Águas De Sao Pedro', 1:"Santa Barbara d'Oeste", 2:'Moji-Mirim'},
'Dept. Água': {0:'Cia. De Abastecimento', 1:'Serv. De Água E Esgoto', 2:'Cia. De São Paulo'}})
def rename_fields(x):
return(tab.
replace(' De ', ' de ').
replace(' E ', ' e ').
replace(' Sao ', ' São ').
replace('Moji', 'Mogi').
replace('Cia.', 'Companhia').
replace('Serv.', 'Serviço')
)
df['Município'] = df['Município'].apply(lambda x: rename_fields(x))
当我使用两列时,这是一个问题
df[['Município', 'Dept. Água']] = df[['Município', 'Dept. Água']].apply(lambda x: rename_fields(x))
我注意到这与使用两个[]有关,即['Col1',Col2]]。即使您只使用一列,但这样[['Col1']],它也不起作用
col = 'Município' # will work
col = ['Município'] # will not work
col = ['Município', 'Dept. Água'] # What I need!!
df[col] = df[col].apply(lambda x: rename_fields(x))
对我来说,作为一个列表使用一个或多个项是很重要的,因为在我的原始代码中,我有一个从以前的函数创建的列表,在这个列表中,我定义了某些函数应该应用于哪些列
使用df重命名多列。重命名:
使用df.rename()函数并引用要重命名的列:
或者重命名现有的DF,而不是创建新的DF
您是否尝试使用pandas.DataFrame.applymap
它将把你的函数应用于所有的数据帧,我知道这就是你想要的
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.applymap.html
如果对您使用列列表很重要,您可以使用:
相关问题 更多 >
编程相关推荐