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