복붙노트

[PYTHON] 팬더 DataFrame에서 특정 셀의 값을 iloc으로 설정

PYTHON

팬더 DataFrame에서 특정 셀의 값을 iloc으로 설정

이 질문과 이것과 비슷한 질문이 있습니다. 차이점은 색인을 모르므로 위치별로 행을 선택해야한다는 것입니다.

df.iloc [0, 'COL_NAME'] = x와 같은 작업을하고 싶지만 iloc은 이러한 종류의 액세스를 허용하지 않습니다. df.iloc [0] [ 'COL_NAME] = x를 수행하면 연결 색인 생성에 대한 경고가 나타납니다.

해결법

  1. ==============================

    1.혼합 위치 및 색인의 경우 .ix를 사용하십시오. 그러나 인덱스가 정수가 아닌지 확인해야합니다. 그렇지 않으면 혼동을 일으킬 수 있습니다.

    혼합 위치 및 색인의 경우 .ix를 사용하십시오. 그러나 인덱스가 정수가 아닌지 확인해야합니다. 그렇지 않으면 혼동을 일으킬 수 있습니다.

    df.ix[0, 'COL_NAME'] = x
    

    또는

    df.iloc[0, df.columns.get_loc('COL_NAME')] = x
    

    예:

    import pandas as pd
    import numpy as np
    
    # your data
    # ========================
    np.random.seed(0)
    df = pd.DataFrame(np.random.randn(10, 2), columns=['col1', 'col2'], index=np.random.randint(1,100,10)).sort_index()
    
    print(df)
    
    
          col1    col2
    10  1.7641  0.4002
    24  0.1440  1.4543
    29  0.3131 -0.8541
    32  0.9501 -0.1514
    33  1.8676 -0.9773
    36  0.7610  0.1217
    56  1.4941 -0.2052
    58  0.9787  2.2409
    75 -0.1032  0.4106
    76  0.4439  0.3337
    
    # .iloc with get_loc
    # ===================================
    df.iloc[0, df.columns.get_loc('col2')] = 100
    
    df
    
          col1      col2
    10  1.7641  100.0000
    24  0.1440    1.4543
    29  0.3131   -0.8541
    32  0.9501   -0.1514
    33  1.8676   -0.9773
    36  0.7610    0.1217
    56  1.4941   -0.2052
    58  0.9787    2.2409
    75 -0.1032    0.4106
    76  0.4439    0.3337
    
  2. ==============================

    2.당신이 그 입장을 안다면, 왜 그 인덱스를 얻지 않을까요?

    당신이 그 입장을 안다면, 왜 그 인덱스를 얻지 않을까요?

    그런 다음 .loc을 사용하십시오.

    df.loc[index, 'COL_NAME'] = x
    
  3. ==============================

    3.필자가 여기에 추가 할 것은 데이터 프레임의 at 함수가 특히 개별 (슬라이스가 아닌) 값의 할당을 많이 수행하는 경우 훨씬 빠릅니다.

    필자가 여기에 추가 할 것은 데이터 프레임의 at 함수가 특히 개별 (슬라이스가 아닌) 값의 할당을 많이 수행하는 경우 훨씬 빠릅니다.

    df.at[index, 'col_name'] = x
    

    제 경험으로는 20 배의 속도 향상을 경험했습니다. 여기에 스페인어로 글을 쓰지 만 계속 진행되고 있다는 인상을줍니다.

  4. ==============================

    4.또 다른 방법은 행 인덱스를 가져온 다음 df.loc 또는 df.at를 사용하는 것입니다.

    또 다른 방법은 행 인덱스를 가져온 다음 df.loc 또는 df.at를 사용하는 것입니다.

    # get row index 'label' from row number 'irow'
    label = df.index.values[irow] 
    df.at[label, 'COL_NAME'] = x
    
  5. ==============================

    5.다른 방법은 다음과 같습니다.

    다른 방법은 다음과 같습니다.

    df["COL_NAME"].iloc[0]=x
    
  6. from https://stackoverflow.com/questions/31569384/set-value-for-particular-cell-in-pandas-dataframe-with-iloc by cc-by-sa and MIT license