Python 如何将带参数的函数应用于数据帧

Python 如何将带参数的函数应用于数据帧,python,pandas,Python,Pandas,我正在尝试删除数据中的所有重音符号。我找到了一个函数,但我不能同时在整个数据帧上应用相同的函数 import unicodedata import pandas as pd def remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) only_ascii = nfkd_form.encode('ASCII', 'ignore') return only_ascii

我正在尝试删除数据中的所有重音符号。我找到了一个函数,但我不能同时在整个数据帧上应用相同的函数

import unicodedata
import pandas as pd

def remove_accents(input_str):
    nfkd_form = unicodedata.normalize('NFKD', input_str)
    only_ascii = nfkd_form.encode('ASCII', 'ignore')
    return only_ascii


data = {'name': ['Guzmán', 'Molly'],
        'year': [2012, 2012]}
df = pd.DataFrame(data)
df
如何应用上述功能


pandas
read_csv
中是否有任何参数可用于实现类似的输出

正如其他人所指出的,这非常简单:

df['name'] = df['name'].apply(remove_accents)
另外,如果您使用的是Python 3,我建议更改
remove\u accents
函数的最后一行
只有ascii返回二进制数据,通常最好的做法是将unicode文本保持为常规(python3)
str

def remove_accents(input_str):
    nfkd_form = unicodedata.normalize('NFKD', input_str)
    only_ascii = nfkd_form.encode('ASCII', 'ignore')
    return only_ascii.decode('utf-8')

您是否看过
应用的任何示例?你的案子看起来很棘手。我不完全理解你的最后一个问题。尝试给出错误,因为
unicodedata.normalize('NFKD',input_str)
需要两个参数
df.name.apply(lambda x:unicodedata.normalize('NFKD',x).encode('ASCII',ignore'))
@COLDSPEED,谢谢,但我得到
TypeError:normalize()参数2必须是unicode,不是str
eror。另外,我需要在整个数据帧上执行此操作once@Thanks. 是否有一种方法可以在整个数据帧上应用函数,而不是一次只执行一列?您可以在列上循环或尝试类似的操作:
df.apply(lambda x:[删除x中I的重音符号(I))
。可能效率不高,但完成了任务。顺便说一句,一个“调试”
apply
并理解函数作为输入的好方法是传递一个函数,该函数只打印它接收到的输入:
lambda x:print(x)
。不过可能只有Python 3。