programing

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

newsource 2022. 11. 26. 08:42

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

4컬럼의 팬더 DataFrame을 가지고 있는데 3컬럼의 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)

마지막으로, 원래 데이터 프레임의 열 수에 따라서는, 이것을 다음과 같이 표현하는 것이 보다 간결할 수 있습니다.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

인덱스별 열:

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

필터 기능을 사용할 때 반드시 축을 지정할 필요는 없습니다.

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

와 같은 데이터 프레임을 반환합니다.

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

범용 기능 양식

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 = pd.DataFrame().assign(A=old['A'], C=old['C'], D=old['D'])

새 데이터 프레임을 원하는 경우:

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

인덱스에 열을 놓을 수 있습니다.

df = pd.DataFrame({'A': [1, 1], 'B': [2, 2], 'C': [3, 3], 'D': [4, 4]})

df[df.columns.drop(['B', 'C'])]

또는

df.loc[:, df.columns.drop(['B', 'C'])]

출력:

   A  D
0  1  4
1  1  4

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