2017-04-03 9 views
5

データフレームの列に文字列が含まれているかどうかをチェックしたいと思います。私はdtypeをチェックするだけでこれができると思ったでしょうが、そうではありません。文字列が含まれているパンダシリーズは、ちょうどまた、(リストのような)他のデータ構造のために使用されDTYPE「オブジェクト」を持っている:データ系列が文字列かどうかを調べる

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]}) 

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]}) 
print(df['a'].dtype) 
print(df['b'].dtype) 
print(df['c'].dtype) 

が生成されます

int64 
object 
object 

かどうかをチェックするいくつかの方法があります列には文字列のみが含まれますか?

答えて

7

あなただけの任意の文字列

df.applymap(type).eq(str).any() 
0

ある場合は、すべての変換機能を使用してデータをマップすることができ確認するには、列のすべての要素が文字列

df.applymap(type).eq(str).all() 

a False 
b  True 
c False 
dtype: bool 

あるかどうかを確認するためにこれを使用することができます要素がstr-typeと等しい場合はTrueまたはFalseに、リストにはFalse要素が含まれているかどうかを確認してください。

以下の例では、 str以外の要素を含んでいます。他のタイプのデータが存在する場合、それはあなたのTrueを教えてくれます

test = [1, 2, '3'] 
False in map((lambda x: type(x) == str), test) 

出力:True

関連する問題