背景:我有以下数据框:
import pandas as pd
d = {'text': ["yeah!", "tomorrow? let's go", "today will do"]}
df = pd.DataFrame(data=d)
df['text'].apply(str)
输出:
text
0 yeah!
1 tomorrow? let's go
2 today will do
目标:
1)检查每一行以确定是否'?'存在并返回一个布尔值(如果True
列在?
列中的任何位置,则返回text
,如果不存在False
,则返回?
2)创建一个包含结果的新列
渴望的outpu t:
text result
0 yeah! False
1 tomorrow? let's go True
2 today will do False
问题: 我使用下面的代码
df['Result'] = df.text.apply(lambda t: t[-1]) is "?"
实际输出:
text result
0 yeah! False
1 tomorrow? let's go False
2 today will do False
问题:如何更改代码以实现1)我的目标?
答案 0 :(得分:2)
正则表达式?
是特殊字符,因此需要在contains
中使用regex=False
进行转义或使用df['result'] = df['text'].astype(str).str.contains('\?')
:
df['result'] = df['text'].astype(str).str.contains('?', regex=False)
或者:
df['result'] = df['text'].apply(lambda x: '?' in x )
print (df)
text result
0 yeah! False
1 tomorrow? let's go True
2 today will do False
或者:
ViewContainerRef