[英]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.