use*_*044 47 python python-2.7 pandas
我想看看我的数据帧中的特定列中是否存在特定字符串.
我收到了错误
ValueError:Series的真值是不明确的.使用a.empty,a.bool(),a.item(),a.any()或a.all().
import pandas as pd
BabyDataSet = [('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)]
a = pd.DataFrame(data=BabyDataSet, columns=['Names', 'Births'])
if a['Names'].str.contains('Mel'):
print "Mel is there"
Run Code Online (Sandbox Code Playgroud)
Uri*_*ren 60
a['Names'].str.contains('Mel') 将返回布尔值大小的指标向量 len(BabyDataSet)
因此,你可以使用
mel_count=a['Names'].str.contains('Mel').sum()
if mel_count>0:
print ("There are {m} Mels".format(m=mel_count))
Run Code Online (Sandbox Code Playgroud)
或者any(),如果您不关心与您的查询匹配的记录数
if a['Names'].str.contains('Mel').any():
print ("Mel is there")
Run Code Online (Sandbox Code Playgroud)
Zer*_*ero 21
你应该用 any()
In [98]: a['Names'].str.contains('Mel').any()
Out[98]: True
In [99]: if a['Names'].str.contains('Mel').any():
....: print "Mel is there"
....:
Mel is there
Run Code Online (Sandbox Code Playgroud)
a['Names'].str.contains('Mel') 给你一系列bool值
In [100]: a['Names'].str.contains('Mel')
Out[100]:
0 False
1 False
2 False
3 False
4 True
Name: Names, dtype: bool
Run Code Online (Sandbox Code Playgroud)
小智 17
OP 旨在找出字符串 'Mel' 是否存在于特定列中,而不包含在该列中的任何字符串中。因此,不需要使用contains,而且效率不高。
一个简单的等于就足够了:
df = pd.DataFrame({"names": ["Melvin", "Mel", "Me", "Mel", "A.Mel"]})
mel_count = (df['names'] == 'Mel').sum()
print("There are {num} instances of 'Mel'. ".format(num=mel_count))
mel_exists = (df['names'] == 'Mel').any()
print("'Mel' exists in the dataframe.".format(num=mel_exists))
mel_exists2 = 'Mel' in df['names'].values
print("'Mel' is in the dataframe: " + str(mel_exists2))
Run Code Online (Sandbox Code Playgroud)
印刷:
There are 2 instances of 'Mel'.
'Mel' exists in the dataframe.
'Mel' is in the dataframe: True
Run Code Online (Sandbox Code Playgroud)
Chr*_*ian 10
我遇到了同样的问题,我使用了:
if "Mel" in a["Names"].values:
print("Yep")
Run Code Online (Sandbox Code Playgroud)
但这个解决方案可能会更慢,因为 pandas 内部从 Series 创建一个列表。
| 归档时间: |
|
| 查看次数: |
75330 次 |
| 最近记录: |