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。