2013-07-31 6 views
30

일부 열만 병합 할 수 있습니까? x, a, b, c, d, e, f 등의 열 x, y, z 및 df2가있는 DataFrame df1이 있습니다.Python Pandas는 특정 열만 병합합니다.

x에 두 개의 DataFrames를 병합하려고합니다. 전체 DataFrame이 아닌 df2.a, df2.b 열을 병합하려고합니다.

결과는 x, y, z, a, b가있는 DataFrame이됩니다.

불필요한 열을 병합 할 수 있지만 더 나은 방법이있는 것처럼 보입니다.

+1

Andy : 쉽지 않은 거룩한 암소 ... 나는 휴식이 필요하다. 분명히 이것을 너무 복잡하게 만든다. 명확성을 가져 주셔서 감사합니다! – joelotz

답변

32

당신은 (단지 그 열이) 하위 DataFrame를 병합 할 수 있습니다 :

df2[list('xab')] # df2 but only with columns x, a, and b 

df1.merge(df2[list('xab')]) 
+3

음, 나는 dropna의 하위 집합처럼 하위 작업과 같은 기본 방법이 있어야하는지 궁금합니다. github 문제 –

4

당신은 모든 행 특정 열을 선택하고 해당 당겨 .loc를 사용할 수 있습니다. 예는 다음과 같습니다 :

이 예에서
pandas.merge(dataframe1, dataframe2.iloc[:, [0:5]], how='left', on='key') 

, 당신은 dataframe1 및 dataframe2 병합된다. '키'에 대해 외부 왼쪽 조인을 선택했습니다. 그러나 dataframe2의 경우 .iloc을 지정하면 원하는 행과 열을 숫자 형식으로 지정할 수 있습니다. :을 사용하여 모든 행을 선택하지만 [0:5]은 처음 5 개의 열을 선택합니다. .loc을 사용하여 이름으로 지정할 수 있지만 긴 열 이름을 처리하는 경우 .iloc이 더 좋을 수 있습니다.

4

는 두 개의 브래킷을 사용하려면, 그래서 당신은 행동의 VLOOKUP 정렬을 수행하는 경우 :

df = pd.merge(df,df2[['Key_Column','Target_Column']],on='Key_Column', how='left') 

이 원래 DF 당신에게 모든 것을 제공 + 당신이 원하는 DF2에 열을 해당 하나를 추가합니다 어울리다.

2

두 개의 테이블에서 선택한 열을 병합합니다.

된 table_1는 t1_a,t1_b,t1_c..,id,..t1_z 열, 및 table_2 후 최종 테이블에 필요한 t2_a,t2_b,t2_c...,id,..t2_z 열, 만 T1_A, ID, t2_a,

mergedCSV = table_1[['t1_a','id']].merge(table_2[['t2_a','id']], on = 'id',how = 'left')

#save resulting output file

mergedCSV.to_csv('output.csv',index = False)

이 포함되어 포함되어있는 경우
+0

을 작성해 주셔서 감사합니다. -이 모든 것이 제가 원했던 것입니다. –

관련 문제