如何将自变量的函数应用于熊猫数据框
我试图删除数据中的所有重音符号。我发现了一个函数,但是我无法一次在整个数据框上应用相同的功能。如何将自变量的函数应用于熊猫数据框
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_accents
函数的最后一行。 only_ascii
正在返回二进制数据,通常最好将unicode文本保持为常规(Python 3)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')
@Thanks。有没有办法可以在整个数据框上应用该功能,而不是一次一列? – learner
你可以遍历列或尝试类似:'df.apply(lambda x:[remove_accents(i)for i in x])''。可能效率不高,但可以完成工作。 –
顺便说一句,“调试”“应用”并理解你的函数作为输入的一种好方法是传递一个函数,它只是简单地打印它接收到的输入:'lambda x:print(x)'。可能只有Python 3。 –
你看过'apply'的任何例子吗?你的情况看起来非常狭隘。我完全不了解你最后的问题。 – DyZ
尝试使用['apply' docs](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html) –
给出的错误为'unicodedata.normalize('NFKD',input_str )'''''''''' – learner