Programing

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

crosscheck 2020. 7. 7. 07:47
반응형

선택한 특정 열을 새 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 = 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

가장 쉬운 방법은

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

.


일반 기능 양식

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)

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

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() 

참고 URL : https://stackoverflow.com/questions/34682828/extracting-specific-selected-columns-to-new-dataframe-as-a-copy

반응형