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

Cur*_*ent 2 python apply pandas

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

  Text
0 I am me
1 I am not you
2 I will be him
Run Code Online (Sandbox Code Playgroud)

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

码:

df['Text'] = df['Test'].apply(lambda x: x.str.split(' ').str[:-1].str.join(' '))
Run Code Online (Sandbox Code Playgroud)

但是,这会给出错误:

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

由于apply函数独立工作,我不太理解,在将其应用于数据帧中的特定列时似乎只会失败?(和我一样奇怪和错误......)

cs9*_*s95 7

当您使用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
Run Code Online (Sandbox Code Playgroud)

情况2
或者,当处理apply单个列时,lambda接收字符串(而不是a pd.Series),因此.str不涉及访问器方法.