2016-10-17 9 views
1

나는 현재 dataframe에서 행을 선택하는 코드를 다음 사용 : 나는 '3D 인쇄는'정말로 일치하지 않는 것을 깨닫고, 당신이 볼 수 있듯이파이썬리스트 integrateUpper/소문자 체크?

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

, 나는 현재 위/소문자에 대해 서로 다른 쿼리를 구현 문제의 항목.

위와 같은 코드를 개선하거나 단축하여 목록에 1,2 단어 모두 대/소문자를 사용할 수 있습니까?

답변

2

너무

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

인쇄에 대한 안전 점검을 수행 할 수 있습니다 list을 이름으로 사용하지 마십시오. 이것은 내장 된 list 함수를 음영 처리하고 나중에 코드에서 사용할 수 없게 만듭니다.


참조 :

pandas.Series.str.contains

+1

Nice. 그거 잊어 버렸어! 작은 nit, 그냥 목록으로 * list * 이름을 사용하지 언급 – idjaw

+1

네, 너무 덧붙였다 –

+0

감사합니다, 매력 작품처럼! – RPacker

2

당신은 단순히 그들 모두가

이 목록은 소문자를 포함 확인합니다 string.lower() 기능을 사용하여 낮은 변환 할 수 있습니다.

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

하고 기억하지만 당신은 당신은 case 매개 변수 False로 전달하여 대소 문자를 구분하지 선택을 할 수 yes

+1

너무 낮은 원래 목록을 변환해야합니다. 또한'list'는 나쁜 변수 이름입니다 – karthikr