[英]Apply (in Pandas) to Multiple Columns
我正在嘗試運行代碼以使用 apply... 以類似於此鏈接示例的方式重命名一個或多個列中的字段。
然而,我並不想成功。 我注意到如果我只使用一列,則可以運行該函數來重命名。
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.rename() 函數並引用要重命名的列:
renamed_df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
df.rename(columns={'oldName1': 'newName1', 'oldName2})
如果對您使用列列表很重要,則可以使用以下命令:
for column in columns:
df[column] = df[column].apply(lambda x: rename_fields(x))
您是否嘗試過使用 pandas.DataFrame.applymap?
它會將您的功能應用於所有 DataFrame,我知道這就是您想要的。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.applymap.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.