developer tip

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

copycodes 2020. 10. 5. 08:05
반응형

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의 해당 열을 추가합니다.


를 사용 .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)

다음 쿼리와 유사한 병합을 작성하려는 동일한 상황이 있습니다.

select
 rio.calculation_type,
 rio.asin, rio.country, rio.channel,
 rio.date, rio.running_inbound, 
 rio.running_outbound, 
 rio.inbound, 
 rio.outbound,
 ro.outbound as ro_outbound,
 min(ro.date) as date_out 
from
 running_inbound_and_outbound rio 
 left join running_outbound ro 
  on ro.running_outbound >= rio.running_inbound 
  and ro.country = rio.country 
  and ro.channel = rio.channel 
  and ro.asin = rio.asin 
  and ro.calculation_type = rio.calculation_type
 group by
  1, 2, 3, 4,5,6,7,8,9

참고 URL : https://stackoverflow.com/questions/17978133/python-pandas-merge-only-certain-columns

반응형