检查是否'?'存在于字符串数据框python中的任何位置

时间:2018-03-10 18:31:29

标签: python regex pandas lambda

背景:我有以下数据框:

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)我的目标?

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