반응형

출처

https://stackoverflow.com/questions/44882063/replace-all-values-with-nan-in-the-dataframe-in-pandas

pandas의 데이터프레임에서 NaN으로 모든 값 대체하기

다음과 같은 작은 데이터프레임(df)이 있습니다.

unique  a     b     c     d 
  0    None  None  None  None
  1    None  None  None  None
  2    None  0132  None  None
  3    None  None  None  0231
  4    None  None  None  None
  5    None  None  0143  None
  6    0121  None  None  None
  7    None  None  None  0432

저는 모든 값을 NaN으로 대체해야 합니다. 저는 df.fillna(np.NAN)의 적용을 시도해 보았지만, 셀에서 숫자가 있는 곳의 값이 변하지 않았습니다. 어떻게 모든 값이 교체되도록 할 수 있을까요? 데이터프레임은 다음처럼 보여야 합니다.

unique  a     b     c     d 
  0    NaN   NaN   NaN   NaN
  1    NaN   NaN   NaN   NaN
  2    NaN   NaN   NaN   NaN
  3    NaN   NaN   NaN   NaN
  4    NaN   NaN   NaN   NaN
  5    NaN   NaN   NaN   NaN
  6    NaN   NaN   NaN   NaN
  7    NaN   NaN   NaN   NaN

3 개의 답변 중 1 개의 답변

np.nan을 대입하기 위해 loc를 사용합니다.

df.loc[:] = np.nan

iloc도 잘 작동합니다.

df.iloc[:] = np.nan
반응형
반응형

출처 

http://chrisalbon.com/python/pandas_create_column_with_loop.html

For 루프로 Pandas 열 만들기


사전준비

import pandas as pd
import numpy as np

데이터프레임 예시 만들기

raw_data = {'student_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze', 'Jacon', 'Ryaner', 'Sone', 'Sloan', 'Piger', 'Riani', 'Ali'], 
        'test_score': [76, 88, 84, 67, 53, 96, 64, 91, 77, 73, 52, np.NaN]}
df = pd.DataFrame(raw_data, columns = ['student_name', 'test_score'])


학점을 할당하기 위한 함수 만들기

# 데이터를 저장할 list(리스트)를 만듭니다. grades = [] # 열에 추가할 각 행을 For로 순회합니다, for row in df['test_score']: # 이 값보다 크면, if row > 95: # 'A' 학점으로 list에 추가합니다. grades.append('A') # 아니고, 이 값보다 크면, elif row > 90: # 'A-' 학점으로 list에 추가합니다. grades.append('A-') # 아니고, 이 값보다 크면, elif row > 85: # 'B' 학점으로 list에 추가합니다. grades.append('B') # 아니고, 이 값보다 크면, elif row > 80: # 'B-' 학점으로 list에 추가합니다. grades.append('B-') # 아니고, 이 값보다 크면, elif row > 75: # 'C' 학점으로 list에 추가합니다. grades.append('C') # 아니고, 이 값보다 크면, elif row > 70: # 'C-' 학점으로 list에 추가합니다. grades.append('C-') # 아니고, 이 값보다 크면, elif row > 65: # 'D' 학점으로 list에 추가합니다. grades.append('D') # 아니고, 이 값보다 크면, elif row > 60: # 'D-' 학점으로 list에 추가합니다. grades.append('D-') # 아니면, else: # 'F' 학점을 추가합니다. grades.append('Failed') # list(리스트)로부터 'grades'열을 추가합니다. df['grades'] = grades

# 새로운 dataframe(데이터프레임)을 봅니다. df

student_nametest_scoregrades
0Miller76C
1Jacobson88B
2Ali84B-
3Milner67D
4Cooze53Failed
5Jacon96A
6Ryaner64D-
7Sone91A-
8Sloan77C
9Piger73C-
10Riani52Failed
11AliNaNFailed


반응형

+ Recent posts