>source

다음과 같은 열이 포함된 데이터 프레임이 있습니다.['labels', 'labels.1', 'labels.2']이것은 어떤 숫자로 계속됩니다레이블.n

이 열 중 하나에 필요한 값이 있습니다. 그 값을 가져와서 추가하고 싶습니다.df['최종_라벨']. 값이 레이블 열에 없으면 새 열은 비어 있어야 합니다.

데이터 프레임은 다음과 같습니다.

|  Age  |  City  | labels | labels.1 | labels.2 | labels.n |
| -----| ------| ------| --------| --------| --------|
|   27  | city A | value1 |          |          |          |
|   45  | city B |        |          |  value2  |          |
|   34  | city A | value2 |          |          |          |
|   57  | city D |        |  value2  |          |          |
|   30  | city E |        |          |          |          |

다음과 같은 최종 데이터 프레임이 필요합니다.

|  Age  |  City  | labels |
| -----| ------| ------|
|   27  | city A | value1 |
|   45  | city B | value2 |
|   34  | city A | value2 |
|   57  | city D | value2 |
|   30  | city E |        |

중첩된 np.where()가 알 수 없는 깊이를 가지므로 간단한 방법으로 구현하는 방법을 모르겠습니다.

제가 시도한 것은 다음과 같습니다.

labels_cols= [col for col in df.columns if "labels" in col]
values_list= ['value1', 'value2']
### I want to basically do this, but the depth is unknown
df['final_labels']= np.where(df['labels'].isin(values_list), df['labels'],
                        np.where(df['labels.1'].isin(values_list), df['labels.1'],
                           np.where(df['labels.2'].isin(values_list), df['labels.2'],
                              np.where(df['labels.n'].isin(values_list), df['labels.n'],''))))
### Tried some things like this, but can't get the syntax right
df['final_label']= df.loc[df.index(values_list), df.columns.str.contains('label')==True]

예상 출력과 샘플 입력 데이터 프레임을 친절하게 공유하십시오.

sammywemmy2022-02-05 08:15:12

@sammywemmy 방금 추가했습니다 감사합니다

Joe2022-02-05 08:15:12
  • 이전 python : Pandas groupby: 여러 기능을 효율적으로 연결
  • 다음 javascript : 잘못된 결과 계산 고도 방위각에서 시간 각도