2017-10-25 10 views
1

나는 다음과 같은 데이터가 있습니다 조건부 변경 열 DTYPE

df.dtypes

df 
A_Key B_ID C_Key D_NA 
123 22 343.0 23 
121 23 45.4 52 
가 리드를 다음

df.dtypes 

A_Key int64 
B_ID int64 
C_Key float 
D_NA int64 

을 내가 조건 "어떤 열의하여 dtypes을 변경할 수있는 방법 키 "또는"ID "를 object? 내 실제 데이터 프레임에 100 개 이상의 열이 있으므로 조회 방법이 필요합니다.

내 현재의 방법은 다음 코드를 사용하지만, 분명히 그것은 파이썬하지 않고 개별 하드 코딩이 필요합니다 다음과 같이 표시해야합니다

for col in ['A_Key', 
      'B_ID', 
      'C_Key']: 
    df[col] = df[col].astype('object') 

내 df.dtypes 출력은 다음과 같습니다

df.dtypes 

A_Key object 
B_ID object 
C_Key object 
D_NA int64 

감사를 도움을 받기 위해 미리 시간을 보내십시오.

답변

1

str.contains

cols = df.columns[df.columns.str.contains('Key|ID')] 
df[cols] = df[cols].astype('O') 

print(df.dtypes) 

A_Key object 
B_ID  object 
C_Key object 
D_NA  int64 
1

이 작동합니다 :

for col in df.columns: 
    if 'KEY' in col or 'ID' in col: 
     df[col] = df[col].astype('object') 
1

사용 대소 문자를 구분하지 정규식 매칭을 시도해보십시오

m = df.columns.str.contains('(?i)key|id') 
df.iloc[:, m] = df.iloc[:, m].astype(object) 

df.dtypes 

A_Key object 
B_ID  object 
C_Key object 
D_NA  int64 
dtype: object 
관련 문제