2017-10-02 1 views
0

두 개의 데이터 프레임이 열차 및 테스트됩니다. 기차 데이터 프레임에는 열 A, Z, D, C가 있고 테스트에는 열 C, D, Z가 있습니다. 열차의 열을 가져 와서 테스트 데이터 프레임에 열차와 같은 순서로 네 개의 열이 있는지 확인하려면 어떻게해야합니까? 새로 추가 된 열 A는 모든 행에 대해 값 0을 가져야합니다.Python pandas - 누락 된 열을 추가하고 동일한 순서로 두 개의 데이터 프레임 열을 만듭니다.

감사합니다.

답변

1

또는 reindex를 사용하여

test['A']=0 
test.reindex_axis(train.columns, axis=1) 
2

당신은 열 순서를 test에 새 열 A를 작성하고 열 이름의 목록을 사용하는 assign를 사용할 수 있습니다

test.assign(A = 0)[['A', 'Z', 'D', 'C']] 

또는 : test.assign(A = 0)[train.columns]


test = pd.DataFrame({ 
    'C': [1,2,3], 
    'D': [2,3,4], 
    'Z': [3,4,5] 
}) 

test.assign(A = 0)[['A','Z','D','C']] 

# A Z D C 
#0 0 3 2 1 
#1 0 4 3 2 
#2 0 5 4 3 
1

다음과 같이 pd.concat을 사용할 수도 있습니다.

import pandas as pd 
import numpy as np 

df_train = pd.DataFrame({ 
    "A": np.random.randn(10), 
    "Z": np.random.randn(10), 
    "D": np.random.randn(10), 
    "C": np.random.randn(10) 
}) 

df_test = pd.DataFrame({ 
    "Z": np.random.randn(10), 
    "D": np.random.randn(10), 
    "C": np.random.randn(10) 
}) 

df_all = pd.concat([df_train, df_test], axis=0) 
df_all = df_all.fillna(0) 

df_train = df_all.iloc[0:len(df_train.index)] 
df_test = df_all.iloc[len(df_train.index)+1:len(df_all.index)] 
+0

또는 pd.concat '로 변경 될 수있다 ([기차, 테스트, 축 = 0, 키 = "기차", "테스트"). LOC ['검사 ']. fillna (0)', 여전히 좋은 질문입니다. ~) – Wen

+0

감사합니다. 나도 도움이되었다. – Keiku

관련 문제