繁体   English   中英

将函数应用于Pandas中数据框列的每一行

[英]Applying a function to every row in a dataframe column in Pandas

我在数据框中有一个基于文本的列,类似于以下格式:

  Text
0 I am me
1 I am not you
2 I will be him

我正在尝试运行一个字符串函数来删除最后一个空格(包括空格)之后的任何内容。 例如'我就是我'将成为'我是'

码:

df['Text'] = df['Test'].apply(lambda x: x.str.split(' ').str[:-1].str.join(' '))

但是,这会给出错误:

AttributeError:'str'对象没有属性'str'

我不太了解,因为apply函数本身就可以工作,只是在将它应用到数据帧中的特定列时似乎失败了? (和我一样奇怪和错误......)

当您使用vanilla字符串时,可以直接调用函数。 直接使用pandas列时,请使用str访问器方法。

情况1
正如我的评论中提到的,使用str方法:

df

            Text
0        I am me
1   I am not you
2  I will be him    

df['Text'] = df['Text'].str.split().str[:-1].str.join(' ')

        Text
0       I am
1   I am not
2  I will be

案例2
或者,当在单个列上使用apply时, lambda会收到一个字符串 (不是pd.Series ),因此不涉及.str访问器方法。

我想你想要重写pandas字符串函数有点慢,但支持NaNs值:

df['Text'] = use_data['Test'].str.split().str[:-1].str.join(' ')

到python字符串函数:

df['Text'] = use_data['Test'].apply(lambda x: ' '.join(x.split(' ')[:-1]))

暂无
暂无

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

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