Pandas의 loc 사양이 바뀌었기 때문에 메모

3358 단어 pandas파이썬
data = [[1,2,3],[4,5,6],[7,8,9]]
col = ['A','C','E']
df = pd.DataFrame(data, columns=col)
#   A  C  E
#0  1  2  3
#1  4  5  6
#2  7  8  9

Pandas 0.23 이전에서는 이것에 대해 loc에서 항목에 A, B, C로 지정하면
데이터에 없는 항목명은 모두 결측값으로서 작성되고 있었다.
sel_col = ['A','B','C']
print(df.loc[:,sel_col])
#version 0.23以前の場合
#   A   B  C
#0  1 NaN  2
#1  4 NaN  5
#2  7 NaN  8

그러나 Pandas 1.0 이후에는 다음과 같은 에러가 나오게 되었다.


아무래도 데이터 프레임에 없는 항목을 지정해서는 안 되는 것 같다.
이전과 같이 데이터 프레임에 없는 항목은 결손으로 만들고 싶은 경우는 대신 reindex를 사용하면 가능하다.
sel_col = ['A','B','C']
print(df.reindex(columns=sel_col))
#   A   B  C
#0  1 NaN  2
#1  4 NaN  5
#2  7 NaN  8

또는 데이터 프레임에 포함 된 항목 만 표시하려면 다음과 같이
데이터 프레임의 항목과 지정 항목의 intersection을 취할 수 있는 것 같다.
print(df.loc[:,df.columns.intersection(sel_col)])
#   A  C
#0  1  2
#1  4  5
#2  7  8

좋은 웹페이지 즐겨찾기