web-dev-qa-db-ja.com

文字列がpandasデータフレームにあるかどうかを確認します

データフレーム内の特定の列に特定の文字列が存在するかどうかを確認したいと思います。

エラーが発生しています

ValueError:シリーズの真理値はあいまいです。 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"
42
user2242044

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))

または、any()、クエリに一致するレコードの数を気にしない場合

if a['Names'].str.contains('Mel').any():
    print ("Mel is there")
55
Uri Goren

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

a['Names'].str.contains('Mel')は一連のブール値を提供します

In [100]: a['Names'].str.contains('Mel')
Out[100]:
0    False
1    False
2    False
3    False
4     True
Name: Names, dtype: bool
20
Zero