Python 熊猫:str.包含第一个单词,后跟冒号
我试图理解如何识别以单词开头,紧接着是冒号的列 我试着确定它应该匹配少于9个字符,后跟一个冒号,但并不缺少 示例如下:Python 熊猫:str.包含第一个单词,后跟冒号,python,pandas,Python,Pandas,我试图理解如何识别以单词开头,紧接着是冒号的列 我试着确定它应该匹配少于9个字符,后跟一个冒号,但并不缺少 示例如下: 迈克尔:应该把它捡起来 熊猫不应该捡起这些东西:( 这也不应该被熊猫捡到 我用str.contains和str.match尝试了多种方法,但似乎找不到解决方案。任何建议都将不胜感激 谢谢。下面的函数应该可以完成这项工作 def check(s): s = s.split(":") if len(s) < 2: retur
谢谢。下面的函数应该可以完成这项工作
def check(s):
s = s.split(":")
if len(s) < 2:
return False
s = s[0].split(" ")
if len(s) == 1:
return True
return False
df["identified_rows"] = df["some_column"].apply(check)
def检查:
s=s.split(“:”)
如果长度小于2:
返回错误
s=s[0]。拆分(“”)
如果len=1:
返回真值
返回错误
df[“已识别的行”]=df[“某些列”]。应用(检查)
我们使用冒号分割文本,如果分割中没有冒号,将返回长度为1的列表,该值小于2,因此将返回false
接下来,我们获取列表的第一个元素,并使用空格将其拆分,如果字符串不包含空格,则s的长度为1,函数将返回True,否则函数将返回False。str.match将接受一个正则表达式。似乎您希望匹配由任意数量的连续lette组成的序列rs,大写或小写,后面紧跟着一个冒号和一个空格;你不在乎后面会出现什么。在这种情况下,请尝试下面的代码
import pandas as pd
df = pd.DataFrame(
['Michael: this should be picked up pandas',
'This should not be picked up by pandas :(',
'This should not: be picked up by pandas either.'],
columns=['TestColumn']
)
df['StartsWithWord'] = df.TestColumn.str.match(r'[A-Za-z]+: .*')
print(df)
这将产生以下输出
TestColumn StartsWithWord
0 Michael: this should be picked up pandas True
1 This should not be picked up by pandas :( False
2 This should not: be picked up by pandas either. False
谢谢你,弗雷德!