source

판다의 다른 컬럼을 기준으로 컬럼 값 추출

factcode 2022. 11. 15. 21:29
반응형

판다의 다른 컬럼을 기준으로 컬럼 값 추출

한 변수의 값을 다른 변수의 조건으로 추출하는 데 시간이 걸리는 것 같습니다.예를 들어 다음과 같은 데이터 프레임이 있습니다.

A  B
p1 1
p1 2
p3 3
p2 4

어떻게 하면 가치를 얻을 수 있을까요?A언제B=3? 내가 가치관을 추출할 때마다A끈이 아니라 물체가 있어요

를 사용하여 조건을 만족시키는 시리즈를 얻은 다음 첫 번째 요소를 얻을 수 있습니다.

In [2]: df
Out[2]:
    A  B
0  p1  1
1  p1  2
2  p3  3
3  p2  4

In [3]: df.loc[df['B'] == 3, 'A']
Out[3]:
2    p3
Name: A, dtype: object

In [4]: df.loc[df['B'] == 3, 'A'].iloc[0]
Out[4]: 'p3'

시도해 보세요query보다 적은 타이핑입니다.

df.query('B==3')['A']

df[df['B']==3]['A']df가 당신의 팬더라고 가정하면요데이터 프레임

사용하다df[df['B']==3]['A'].values[0]괄호 없이 아이템만 원하는 경우

편집: 아래 "이전"에서 설명한 내용은 체인 인덱싱이며 상황에 따라 작동하지 않을 수 있습니다.베스트 프랙티스는 loc를 사용하는 것이지만 개념은 동일합니다.

df.loc[row, col]

과 콜은 직접 지정(예: 'A' 또는 ['A', 'B'])하거나 마스크로 지정할 수 있습니다(예: df['B'] == 3).다음 예시를 사용합니다.

df.loc[df['B'] == 3, 'A']

이전 버전:이런 용어로 생각하는 게 더 쉽지만 다른 답을 빌리는 거예요.원하는 값은 데이터 프레임에 있습니다.

df[*column*][*row*]

여기과 행은 반환할 값을 가리킵니다.예를 들어 은 'A'이고 행에는 마스크를 사용합니다.

df['B'] == 3

시리즈로부터 최초의 일치치를 취득하려면 , 다음의 몇개의 옵션이 있습니다.

df['A'][df['B'] == 3].values[0]
df['A'][df['B'] == 3].iloc[0]
df['A'][df['B'] == 3].to_numpy()[0]
male_avgtip=(tips_data.loc[tips_data['sex'] == 'Male', 'tip']).mean()

나는 또한 나의 과제를 위해 이 Clausing과 Extraction 작업을 수행했다.

대신 사용할 수 있습니다.iloc[0]. 값이 1개뿐일 경우 더 선명하게 표시됩니다.

df.loc[df['B'] == 3, 'A'].squeeze()

출력:

'p3'

언급URL : https://stackoverflow.com/questions/36684013/extract-column-value-based-on-another-column-in-pandas

반응형