[python] Python Pandas는 특정 열만 병합합니다.

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

x에서 두 개의 DataFrame을 병합하고 싶지만 전체 DataFrame이 아닌 df2.a, df2.b 열만 병합하고 싶습니다.

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

병합 한 다음 원하지 않는 열을 삭제할 수 있지만 더 나은 방법이있는 것 같습니다.



답변

하위 DataFrame (해당 열만 포함)을 병합 할 수 있습니다.

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

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


답변

두 개의 대괄호를 사용하고 싶으므로 VLOOKUP 종류의 작업을 수행하는 경우 :

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

이것은 원래 df의 모든 것을 제공하고 결합하려는 df2의 해당 열을 추가합니다.


답변

대상 데이터 프레임에서 열을 삭제하고 싶지만 조인에 열이 필요한 경우 다음을 수행 할 수 있습니다.

df1 = df1.merge(df2[['a', 'b', 'key1']], how = 'left',
                left_on = 'key2', right_on = 'key1').drop('key1')

.drop('key1')부분은 ‘key1’이 처음에 조인해야하는 경우에도 결과 데이터 프레임에 유지되는 것을 방지합니다.


답변

를 사용 .loc하여 모든 행이있는 특정 열을 선택한 다음 끌어 올 수 있습니다. 예는 다음과 같습니다.

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

이 예에서는 dataframe1과 dataframe2를 병합합니다. ‘키’에 대한 외부 왼쪽 조인을 선택했습니다. 그러나 dataframe2의 .iloc경우 숫자 형식으로 원하는 행과 열을 지정할 수 있도록 지정했습니다 . 를 사용 :하여 모든 행을 [0:5]선택 하지만 처음 5 개 열을 선택합니다. .loc이름으로 지정하는 데 사용할 수 있지만 긴 열 이름을 다루는 경우 .iloc더 좋을 수 있습니다.


답변

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

경우는 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)


답변