2016-10-17 2 views
1

私は現在、データフレームから行を選択するには、次のコードを使用します。私は「3Dプリント」は本当にすべて一致しなかったことに気づいて、あなたが見ることができるようにPythonリストintegrateUpper /小文字のチェック?

list = ['3d block','3D Block','3D block','3d Block','cafe','Cafe'] 
data[data['description'].str.contains('|'.join(list))] 

、私は現在、大文字/小文字のためのさまざまなクエリを実行します問題の項目。

上記のコードは、1つの単語と2つの単語の両方の大文字と小文字のすべてのバリエーションが含まれるように、改善または短縮できますか?

答えて

2

をそのための安全確認を行うことができますlistを名前として使用しないでください。これは組み込みのlist関数をシャドーし、コードの後半で使用できなくします。


参考:

pandas.Series.str.contains

+1

ニース。それを忘れてしまった!小さなニット、ちょうど*リスト*名前として 'リスト'を使用しないことを言及 – idjaw

+1

はい、それも加えた –

+0

ありがとう、魅力のように動作します! – RPacker

2

あなたは、単にそれらすべてが

はあなたのリストには、唯一の小文字が含まれていることを確認string.lower()機能を使用して下げるように変換することができます。

lst = ['3D Block', 'cafe'] 
data[data['description'].str.contains('|'.join(lst), case=False)] 

とすることを忘れないでください:しかし、あなたはあなたがFalseとしてcaseパラメータを渡すこと大文字小文字を区別しない選択を行うことができますあまりにも

my_list=['3d block', 'cafe'] 

# As karthik suggested, just to be safe, convert your list to lowercase 
for i in range(len(my_list)): 
    my_list[i]=ele.lower() 

my_query='3D bLoCk' 
if my_query.lower() in my_list: 
    print('yes') 

プリントyes

+1

あなたがあまりにも低くし、元のリストを変換する必要があります。また、 'list'は悪い変数名です – karthikr

関連する問題