con*_*001 3 python string list dataframe pandas
在python中,如何检查字符串是否是字符串列表的元素?
我正在使用的示例数据是:
testData=pd.DataFrame({'value':['abc','cde','fgh']})
Run Code Online (Sandbox Code Playgroud)
那么为什么以下代码的结果为"False":
testData['value'][0] in testData['value']
Run Code Online (Sandbox Code Playgroud)
您可以使用vectorised str.contains来测试每行中是否存在字符串:
In [262]:
testData['value'].str.contains(testData['value'][0])
Out[262]:
0 True
1 False
2 False
Name: value, dtype: bool
Run Code Online (Sandbox Code Playgroud)
如果你想知道它是否存在于任何一行,那么使用any:
In [264]:
testData['value'].str.contains(testData['value'][0]).any()
Out[264]:
True
Run Code Online (Sandbox Code Playgroud)
好的,以解决您的上一个问题:
In [270]:
testData['value'][0] in testData['value']
Out[270]:
False
Run Code Online (Sandbox Code Playgroud)
这是因为pd.Series.__contains__实施:
def __contains__(self, key):
"""True if the key is in the info axis"""
return key in self._info_axis
Run Code Online (Sandbox Code Playgroud)
如果我们看看_info_axis实际是什么:
In [269]:
testData['value']._info_axis
Out[269]:
RangeIndex(start=0, stop=3, step=1)
Run Code Online (Sandbox Code Playgroud)
然后,我们可以看到,当我们做'abc'在testData['value']我们真正测试是否'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
Run Code Online (Sandbox Code Playgroud)
我们现在可以看到返回,True因为我们正在测试索引中是否存在"turkey"
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |