Pandas에서 특정 문자 열을 포함하도록 NaN 행 필터링
Nov 15 2020
다음과 같이 작은 데이터 세트가 제공됩니다.
*id *building floor_number *floor_name
0 1 A 8.0 5F
1 2 A 4.0 4F
2 3 A NaN 3F
3 4 A NaN NaN
4 5 A NaN NaN
5 6 B 14.0 17F
6 7 B 13.0 16F
7 8 B 20.0 world
8 9 B 13.0 hello
9 10 B 13.0 16F
포함하는 *
열 ( selected_col
아래 참조)에 NaN
값 이 있는지 확인하고 싶습니다 . 따라서 NaN
행 필터링을위한 조건 코드를 작성해야합니다 selected_col
.
selected_col = df.columns[df.columns.str.contains(pat = '^\*')]
...
다음과 같이 행을 필터링하려면 어떻게해야합니까? 감사.
*id *building floor_number *floor_name
3 4 A NaN NaN
4 5 A NaN NaN
편집 :NaN
포함 된 열에 대해 셀 을 강조 *
표시해야하므로 (이 열에는 NaN
s 가 없어야 함 ) np.where
가능 하면 사용하고 싶습니다 .
np.where(conditions, None, 'contains NaNs for required columns')
참조 관련 : Python의 여러 조건을 기반으로 데이터 프레임 셀 강조 표시
답변
2 BENY Nov 16 2020 at 03:38
확인 filter
과any
out = df[df.filter(like='*').isna().any(1)]
Out[39]:
*id *building floor_number *floor_name
3 4 A NaN NaN
4 5 A NaN NaN
1 RCvaram Nov 16 2020 at 03:43
더 좋은 방법은 BEEN_YO의 대답입니다. 또 다른 방법은 다음과 같이 할 수 있습니다.
NaN
값 을 확인하는 데 필요한 목록 압축을 사용하여 열을 필터링 합니다.isna()
방법으로 확인
cols = [col for col in df.columns if '*' in col]
out = df[df[cols].isna().all(1)]