두 개의 데이터 프레임이 열차 및 테스트됩니다. 기차 데이터 프레임에는 열 A, Z, D, C가 있고 테스트에는 열 C, D, Z가 있습니다. 열차의 열을 가져 와서 테스트 데이터 프레임에 열차와 같은 순서로 네 개의 열이 있는지 확인하려면 어떻게해야합니까? 새로 추가 된 열 A는 모든 행에 대해 값 0을 가져야합니다.Python pandas - 누락 된 열을 추가하고 동일한 순서로 두 개의 데이터 프레임 열을 만듭니다.
감사합니다.
두 개의 데이터 프레임이 열차 및 테스트됩니다. 기차 데이터 프레임에는 열 A, Z, D, C가 있고 테스트에는 열 C, D, Z가 있습니다. 열차의 열을 가져 와서 테스트 데이터 프레임에 열차와 같은 순서로 네 개의 열이 있는지 확인하려면 어떻게해야합니까? 새로 추가 된 열 A는 모든 행에 대해 값 0을 가져야합니다.Python pandas - 누락 된 열을 추가하고 동일한 순서로 두 개의 데이터 프레임 열을 만듭니다.
감사합니다.
또는 reindex
를 사용하여
test['A']=0
test.reindex_axis(train.columns, axis=1)
당신은 열 순서를 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
다음과 같이 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)]
또는 pd.concat '로 변경 될 수있다 ([기차, 테스트, 축 = 0, 키 = "기차", "테스트"). LOC ['검사 ']. fillna (0)', 여전히 좋은 질문입니다. ~) – Wen
감사합니다. 나도 도움이되었다. – Keiku