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它在这里不应该有很大的区别,但这是正确的做法。错误回溯可以揭示一些问题,否则很难发现这些问题。