다음은 정수 및 문자열로 인덱싱 된 데이터 프레임에 대해 모든 사용자가 제공 한 유효한 솔루션에 대한 요약입니다.
df.iloc, df.loc 및 df.at는 두 유형의 데이터 프레임 모두에서 작동하며 df.iloc은 행 / 열 정수 인덱스, df.loc 및 df.at는 열 이름 및 / 또는 정수 인덱스를 사용한 값 설정을 지원합니다. .
지정된 인덱스가 존재하지 않으면 df.loc과 df.at는 새로 삽입 된 행 / 열을 기존 데이터 프레임에 추가하지만 df.iloc은 "IndexError : 위치 인덱서가 범위를 벗어났습니다"를 발생시킵니다. Python 2.7 및 3.7에서 테스트 한 실제 예제는 다음과 같습니다.
import numpy as np, pandas as pd
df1 = pd.DataFrame(index=np.arange(3), columns=['x','y','z'])
df1['x'] = ['A','B','C']
df1.at[2,'y'] = 400
# rows/columns specified does not exist, appends new rows/columns to existing data frame
df1.at['D','w'] = 9000
df1.loc['E','q'] = 499
# using df[<some_column_name>] == <condition> to retrieve target rows
df1.at[df1['x']=='B', 'y'] = 10000
df1.loc[df1['x']=='B', ['z','w']] = 10000
# using a list of index to setup values
df1.iloc[[1,2,4], 2] = 9999
df1.loc[[0,'D','E'],'w'] = 7500
df1.at[[0,2,"D"],'x'] = 10
df1.at[:, ['y', 'w']] = 8000
df1
>>> df1
x y z w q
0 10 8000 NaN 8000 NaN
1 B 8000 9999 8000 NaN
2 10 8000 9999 8000 NaN
D 10 8000 NaN 8000 NaN
E NaN 8000 9999 8000 499.0
df['x']['C']
)을 사용 하지 마십시오df.ix['x','C']
.