[python] 선택한 특정 열을 새 DataFrame에 복사본으로 추출

4 개의 열이있는 팬더 DataFrame이 있고 새로운 DataFrame 만들고 싶습니다. 열 세 가지가 있습니다. 이 질문은 다음과 유사합니다. 데이터 프레임에서 특정 열을 추출 하지만 R이 아닌 팬더의 경우 다음 코드는 작동하지 않으며 오류가 발생하며 판다 닉 방식이 아닙니다.

import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator 

판다 닉 방법은 무엇입니까?



답변

이것을하는 방법이 있으며 실제로 R과 비슷하게 보입니다.

new = old[['A', 'C', 'D']].copy()

여기서는 원래 데이터 프레임에서 원하는 열을 선택하고 해당 열에 대한 변수를 만듭니다. 새로운 데이터 프레임을 수정하고 싶을 .copy()때는SettingWithCopyWarning .

다른 방법은 filter기본적으로 사본을 작성하는 것입니다.

new = old.filter(['A','B','D'], axis=1)

마지막으로 원본 데이터 프레임의 열 수에 따라 a를 사용하여 이것을 표현하는 것이 더 간결 할 수 있습니다 drop(기본적으로 사본이 생성됨).

new = old.drop('B', axis=1)


답변

가장 쉬운 방법은

new = old[['A','C','D']]

.


답변

또 다른 간단한 방법은 다음과 같습니다.

new = pd.DataFrame([old.A, old.B, old.C]).transpose()

여기서 old.column_name당신에게 시리즈를 제공 할 것입니다. 유지하려는 모든 열 계열의 목록을 만들어 DataFrame 생성자에 전달하십시오. 모양을 조정하려면 조옮김을해야합니다.

In [14]:pd.DataFrame([old.A, old.B, old.C]).transpose()
Out[14]:
   A   B    C
0  4  10  100
1  5  20   50


답변

일반 기능 양식

def select_columns(data_frame, column_names):
    new_frame = data_frame.loc[:, column_names]
    return new_frame

위의 문제에 해당

selected_columns = ['A', 'C', 'D']
new = select_columns(old, selected_columns)


답변

새로운 데이터 프레임을 원한다면 :

import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new=  old[['A', 'C', 'D']]


답변

내가 알 수있는 한 필터 기능을 사용할 때 반드시 축을 지정할 필요는 없습니다.

new = old.filter(['A','B','D'])

와 동일한 데이터 프레임을 반환

new = old.filter(['A','B','D'], axis=1)


답변

색인 별 열 :

# selected column index: 1, 6, 7
new = old.iloc[: , [1, 6, 7]].copy()