[英]Python: How to pass row and next row DataFrame.apply() method?
[英]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.