python如何检查字符串是不是是字符串列表的元素[重复]
Posted
技术标签:
【中文标题】python如何检查字符串是不是是字符串列表的元素[重复]【英文标题】:python how to check if a string is an element of a list of strings [duplicate]python如何检查字符串是否是字符串列表的元素[重复] 【发布时间】:2017-03-11 10:51:15 【问题描述】:在python中,如何检查一个字符串是否是字符串列表中的一个元素?
我正在使用的示例数据是:
testData=pd.DataFrame('value':['abc','cde','fgh'])
那为什么下面代码的结果是“False”:
testData['value'][0] in testData['value']
【问题讨论】:
抱歉,数据将存储为包含示例 df 中单个字符串的系列,但您的真实 df 数据真的是每行的字符串列表吗?因为那是根本不同的 @EdChum 的回答很好。为了帮助修复您的原始错误,您只需检查 testData['value'] 的值,因此您的最后一行将是 'testData['value'][0] in testData['value'].values' 并且您将得到一个真 @EdChum,我想示例数据更准确地描述了我的问题。你提到的根本区别可能是我忽略的。 实际上testData['value'][0] in testData['value']
我无法解释,不知何故,当标量值为 lhs 时,它能够以某种方式将 Series
数组评估为一个奇怪的标量布尔值
我找到了你上一个问题的答案
【参考方案1】:
您可以使用矢量化的str.contains
来测试每行中是否存在/包含字符串:
In [262]:
testData['value'].str.contains(testData['value'][0])
Out[262]:
0 True
1 False
2 False
Name: value, dtype: bool
如果您想知道它是否出现在任何行中,请使用any
:
In [264]:
testData['value'].str.contains(testData['value'][0]).any()
Out[264]:
True
可以回答您的最后一个问题:
In [270]:
testData['value'][0] in testData['value']
Out[270]:
False
这是因为实现了pd.Series.__contains__
:
def __contains__(self, key):
"""True if the key is in the info axis"""
return key in self._info_axis
如果我们看一下 _info_axis
的实际含义:
In [269]:
testData['value']._info_axis
Out[269]:
RangeIndex(start=0, stop=3, step=1)
然后我们可以看到当我们在testData['value']
中执行'abc'
时,我们真的在测试'abc'
是否真的在索引中,这就是它返回False
的原因
例子:
In [271]:
testData=pd.DataFrame('value':['abc','cde','fgh'], index=[0, 'turkey',2])
testData
Out[271]:
value
0 abc
turkey cde
2 fgh
In [272]:
'turkey' in testData['value']
Out[272]:
True
我们可以看到它现在返回 True
,因为我们正在测试索引中是否存在 'turkey'
【讨论】:
以上是关于python如何检查字符串是不是是字符串列表的元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python如何检查列表中的项目是不是为浮点数,如果是,将其更改为字符串? [复制]