2017-05-29 8 views
2

パンダを使用して各列で文字列値を検索する方法。 は私が32列、pandasを使用してデータフレーム全体の部分文字列を検索する方法は?

df[df['A'].str.contains("hello")] 

これを持っていると言うことができますすることは値が値が存在しているすべての列と行を検索するためにどのように、「A」欄に存在するか否かを返します。 データセット:

A   B   C 
1   hi   hie 
2   bye   Hello 

私は "ハロー" を検索したり、 "こんにちは" の出力は、必要がある場合:

A   B   C 
2   bye   Hello 

答えて

2

私はあなたが使用することができると思う:

df = pd.DataFrame({'A':['hello fgf','s','f'],'B':['d','ff hello','f'],'C':[4,7,8]}) 
print (df) 
      A   B C 
0 hello fgf   d 4 
1   s ff hello 7 
2   f   f 8 

mask = df.applymap(lambda x: 'hello' in str(x)) 
print (mask) 
     A  B  C 
0 True False False 
1 False True False 
2 False False False 

次に必要フィルタが追加した場合anyチェックのため少なくとも1つの行あたりTrueboolean indexing

df1 = df[mask.any(axis=1)] 
print (df1) 
      A   B C 
0 hello fgf   d 4 
1   s ff hello 7 

EDIT:

tested = 'hello' 
mask = df.applymap(lambda x: tested.lower() in str(x).lower()) 
print (mask) 
     A  B  C 
0 False False False 
1 False False True 
+0

「はTypeError :( "'float'型の引数がiterableではない、index_ Account_Name 'にu'occurされています) [Finished in 0.3s with exit code 1] "---->このエラーが発生しました。 – Sidhartha

+0

大文字と小文字が区別されます。大文字と小文字を区別する方法は? – Sidhartha

+0

あなたはキーに敏感ではないと思いますか?私のサンプルを渡して質問に追加できますか? – jezrael

1

あなたはまた、1つの文字列にすべての列を連結し、連結した文字列であなたのサブを検索することができます。

In [21]: df[df.astype(str).add('|').sum(1).str.contains('hello')] 
Out[21]: 
      A   B C 
0 hello fgf   d 4 
1   s ff hello 7 

説明:

In [22]: df.astype(str).add('|').sum(1) 
Out[22]: 
0 hello fgf|d|4| 
1  s|ff hello|7| 
2   f|f|8| 
dtype: object 
関連する問題