Python 如何使用DataFrame.apply()将行内容作为字符串参数传递?
我有一个类似这样的类:Python 如何使用DataFrame.apply()将行内容作为字符串参数传递?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个类似这样的类: class A: def __int__(self): pass def to_lower(self,content_text): return content_text.lower() 我有一个包含以下列的数据框:['From','To','Email Body'] 现在,我想将['Email Body']作为参数content\u text传递给上述函数 目前,我正在做的就是: from somefile import
class A:
def __int__(self):
pass
def to_lower(self,content_text):
return content_text.lower()
我有一个包含以下列的数据框:['From','To','Email Body']
现在,我想将['Email Body']
作为参数content\u text
传递给上述函数
目前,我正在做的就是:
from somefile import A
processor = A()
messages_df_inbox.apply(processor.to_lower)
这给了我一个错误:
AttributeError:“Series”对象没有属性“lower”
正确的方法是什么?默认情况下,将函数应用到收件箱中的每一列。由于您只想申请电子邮件正文,您可以
# Apply to Email body column only
messages_df_inbox['Email Body'].apply(processor.to_lower)
或者
# Change your function to point to email body
class A:
def __int__(self):
pass
def to_lower(self,content_text):
return content_text['Email Body'].lower()
messages_df_inbox.apply(processor.to_lower, axis = 1)
默认情况下,将您的函数.to\u lower()应用于邮件\u df\u收件箱中的每一列。由于您只想申请电子邮件正文,您可以
# Apply to Email body column only
messages_df_inbox['Email Body'].apply(processor.to_lower)
或者
# Change your function to point to email body
class A:
def __int__(self):
pass
def to_lower(self,content_text):
return content_text['Email Body'].lower()
messages_df_inbox.apply(processor.to_lower, axis = 1)
apply
逐行(如果传递的是axis=1
,则逐列)调用在数据帧的每一行(列)上传递的函数。由于数据帧行(列)是一系列的,因此您可以预期得到的结果
如果要对列应用任意函数,您需要
df[col].map(func)
,但在您的情况下,如果要将电子邮件列小写,只需df['email Body'].str.lower()
。有关字符串方法的更多信息,请参见此处:apply
逐行(如果传递的是axis=1
,则逐列)调用在数据帧的每一行(列)上传递的函数。由于数据帧行(列)是一系列的,因此您可以预期得到的结果
如果要对列应用任意函数,您需要
df[col].map(func)
,但在您的情况下,如果要将电子邮件列小写,只需df['email Body'].str.lower()
。有关字符串方法的更多信息,请参见此处:邮件\u df\u收件箱['Email Body'].apply(processor.to\u lower)
。请提供完整的错误输出,以及.Hi@AMC,我提供了类代码以及我如何应用它以及我得到的错误是什么。这还不够吗?@dydx它在这里不应该有很大的区别,但这是正确的做法。错误回溯可以揭示一些很难发现的问题。messages\u df\u inbox['Email Body'].apply(processor.to\u lower)
。请提供整个错误输出,以及一个.Hi@AMC,我提供了类代码,以及我如何应用它以及我得到的错误是什么。这还不够吗?@dydx它在这里不应该有很大的区别,但这是正确的做法。错误回溯可以揭示一些问题,否则很难发现这些问题。