繁体   English   中英

如何使用 DataFrame.apply() 将行内容作为字符串参数传递?

[英]How to pass row content as string argument using DataFrame.apply()?

我有一个看起来像这样的 class:

class A:
    def __int__(self):
        pass
    def to_lower(self,content_text):
        return content_text.lower()

我有一个 DataFrame 包含以下列: ['From', 'To', 'Email Body']

现在,我想将['Email Body']作为参数content_text传递给上述 function 。

目前,这就是我正在做的事情:

from somefile import A
processor = A()

messages_df_inbox.apply(processor.to_lower)

它给了我这个错误:

AttributeError: 'Series' object 没有属性 'lower'

这样做的正确方法是什么?

默认情况下,将 function.to_lower() 应用到 messages_df_inbox 中的每一列。 由于您只想申请 email 主体,您可以

# 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则逐列)并调用您在 dataframe 的每一行(列)上传递的 function。 由于 dataframe 行(列)是系列,因此您会期望得到的结果。

如果要将任意 function 应用于列,则需要df[col].map(func) ,但在您的情况下,如果要小写 email 列,只需df['Email Body'].str.lower() . 有关字符串方法的更多信息: https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM