2017-09-26 4 views
1

지금까지 파이썬 데이터 프레임 열의 특정 값에 대한 첫 번째 일치하는 레코드의 인덱스를 얻고 있습니다. I는 아래의 코드를 사용하여 얻을 :Python Pandas - Dataframe 열의 첫 번째 일치하는 값의 인덱스 확인

df1.loc[df1.Column1 == 'word1'].index.tolist()[0] 

한다고 가정 색인 위치에, 예를 들어 상기 데이터 프레임의 '단어 1'이고 본 네 번 경우 : 3, 7, 9, 14는, 상기 명령 나야를 반환 대답은

이제는 여러 값으로 동일한 값을 확인해야하며 결과는 그 값 중 첫 번째로 일치하는 인덱스 여야합니다.

나는 아래와 같이 몇 가지 옵션을 시도했으나 헛된 것이 었습니다.

df1.loc[df1.Column1 == 'word1'|'word2'].index.tolist()[0] 
df1.loc[df1.Column1 == 'word1','word2'].index.tolist()[0] 
df1.loc[df1.Column1 == 'word1' or 'word2'].index.tolist()[0] 

여기에 여러 값을 확인하는 방법에 대한 아이디어가 있으십니까?

답변

1

당신은 조건 isin 필요

df1.loc[df1.Column1.isin(['word1','word2'])].index.tolist()[0] 
첫 번째 최대 값의 GET 지수 idxmax

더 간단 솔루션, True1들처럼 처리되기 때문에 :

print (df1.Column1.isin(['word1','word2'])) 
0 False 
1 False 
2 False 
3  True 
4 False 
5 False 
6  True 
7 False 
Name: Column1, dtype: bool 

df1.Column1.isin(['word1','word2']).idxmax() 

또는 numpy.where와 :

np.where(df1.Column1.isin(['word1','word2']))[0][0] 

샘플 :

df1 = pd.DataFrame({ 'Column1':['s','g','h','word2','d','f','word1','d']}) 

a = df1.Column1.isin(['word1','word2']).idxmax() 
print (a) 
3 
+0

정말 고마워. 하지만 당신은 idxmax에 더 많은 빛을 비춰 줄 수 있습니까? 그 이름으로 나는 idxmin이라고 불리는 것이 있어야한다고 생각합니다. – JKC

+0

예,'df1.Column1.isin ([ 'word1', 'word2']) idxmin()'첫 번째'False' 인덱스를 반환하고'df1 = pd.DataFrame ({ 'Column1': [ 'word2 ','g ','h ','word2 ','d ','f ','word1 ','d ']})' – jezrael

+1

그것을 얻었습니다 :-) @jezrael 감사합니다. – JKC

관련 문제