수색…


소개

DataFrame 인덱서 개체 .ix , .loc , .iloc 사용하여 데이터 프레임의 행에 액세스하고 부울 마스크를 사용하는 방법과 구별되는 방법.

부울 인덱스를 사용하여 DataFrame에 액세스

다음은 예제 데이터 프레임입니다.

df = pd.DataFrame({"color": ['red', 'blue', 'red', 'blue']},
                  index=[True, False, True, False])
      color
True    red
False  blue
True    red
False  blue

.loc 액세스하기

df.loc[True]
     color
True   red
True   red

.iloc 액세스하기

df.iloc[True]
>> TypeError

df.iloc[1]
color    blue
dtype: object

유의할 점은 구형 팬더 버전은 부울과 정수 입력을 구별하지 못했기 때문에 .iloc[True].iloc[1]

.ix 액세스하기

df.ix[True]
     color
True   red
True   red

df.ix[1]
color    blue
dtype: object

보다시피 .ix 에는 두 가지 동작이 있습니다. 이것은 코드에서 매우 나쁜 행위이므로 피해야합니다. 보다 명확하게하려면 .iloc 또는 .loc 을 사용하십시오.

부울 마스크를 데이터 프레임에 적용하기

다음은 예제 데이터 프레임입니다.

  color      name   size
0   red      rose    big
1  blue    violet    big
2   red     tulip  small
3  blue  harebell  small

마법의 __getitem__ 또는 [] 접근 __getitem__ 사용합니다. 데이터 프레임과 동일한 길이의 True 및 False 목록을 제공하면 다음과 같은 효과를 얻을 수 있습니다.

df[[True, False, True, False]]
  color   name   size
0   red   rose    big
2   red  tulip  small

열 값을 기반으로 데이터 마스킹

다음은 예제 데이터 프레임입니다.

  color      name   size
0   red      rose    big
1  blue    violet  small
2   red     tulip  small
3  blue  harebell  small

데이터 프레임에서 단일 열에 액세스하면 간단한 비교 == 를 사용하여 열의 모든 요소를 ​​지정된 변수와 비교하여 pd.Series 를 작성합니다. 참 및 거짓

df['size'] == 'small'
0    False
1     True
2     True
3     True
Name: size, dtype: bool

pd.Series 는 간단한 list 의 확장 인 np.array 의 확장입니다. 따라서 우리는 위의 예제 에서처럼 이것을 __getitem__ 또는 [] 접근 자로 넘길 수 있습니다.

size_small_mask = df['size'] == 'small'
df[size_small_mask]
  color      name   size
1  blue    violet  small
2   red     tulip  small
3  blue  harebell  small

인덱스 값을 기반으로 데이터 마스킹

다음은 예제 데이터 프레임입니다.

         color   size
name                 
rose       red    big
violet    blue  small
tulip      red  small
harebell  blue  small

열 값처럼 인덱스 값을 기반으로 마스크를 만들 수 있습니다.

rose_mask = df.index == 'rose'
df[rose_mask]
     color size
name           
rose   red  big

그러나이 일을하는 것은 거의 동일

df.loc['rose']
color    red
size     big
Name: rose, dtype: object

중요한 차이점은 .loc 가 일치하는 인덱스에서 한 행만 발견하면 pd.Series 를 반환하고 일치하는 행이 더 pd.DataFrame 을 반환합니다. 이것은이 방법을 다소 불안정하게 만든다.

이 동작은 .loc 에 단일 항목의 목록을 제공하여 제어 할 수 있습니다. 이렇게하면 데이터 프레임을 반환하게됩니다.

df.loc[['rose']]
         color   size
name                 
rose       red    big


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow