我在数据框中有一个基于文本的列,类似于以下格式:
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(' '))
但是,这会产生错误:
属性错误:' str'对象没有属性' str'
我不太了解,因为apply函数可以自行运行,但在将其应用于数据框中的特定列时似乎只会失败? (和我一样奇怪和错误......)
答案 0 :(得分: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
案例2
或者,在单个列上使用apply
时,lambda
会收到字符串,(而不是pd.Series
),因此.str
访问者方法不参与。
答案 1 :(得分:1)
我认为你想要重写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]))