multiple index groupby examples example data columns python join pandas inner-join

index - Unión interna de Python Pandas



python pandas group by example (2)

Estoy tratando de unir el DataFrame A con el DataFrame B y estoy incurriendo en un error.

Aquí está mi declaración conjunta:

merged = DataFrameA.join(DataFrameB, on=[''Code'',''Date''])

Y aquí está el error:

ValueError: len(left_on) must equal the number of levels in the index of "right"

No estoy seguro de que el orden de las columnas importe (no están realmente "ordenadas" ¿verdad?), Pero por si acaso, los DataFrames están organizados de la siguiente manera:

DataFrameA: Code, Date, ColA, ColB, ColC, ..., ColG, ColH (shape: 80514, 8 - no index) DataFrameB: Date, Code, Col1, Col2, Col3, ..., Col15, Col16 (shape: 859, 16 - no index)

¿Debo corregir mi declaración de unión? ¿O hay otra forma mejor de obtener la intersección (o unión interna) de estos dos DataFrames?


Aquí hay otra forma de realizar join . A diferencia de la respuesta verificada, esta es una respuesta más general aplicable a todos los demás tipos de unión .

Unir internamente

inner join también se puede realizar al mencionarla explícitamente de la siguiente manera en how :

pd.merge(df1, df2, on=''filename'', how=''inner'')

La misma metodología es aplicable para los otros tipos de unión:

OuterJoin

pd.merge(df1, df2, on=''filename'', how=''outer'')

Izquierda Únete

pd.merge(df1, df2, on=''filename'', how=''left'')

Únete a la derecha

pd.merge(df1, df2, on=''filename'', how=''right'')


use merge si no se está uniendo al índice:

merged = pd.merge(DataFrameA,DataFrameB, on=[''Code'',''Date''])

Seguimiento a la pregunta a continuación:

Aquí hay un ejemplo replicable:

import pandas as pd # create some timestamps for date column i = pd.to_datetime(pd.date_range(''20140601'',periods=2)) #create two dataframes to merge df = pd.DataFrame({''code'': [''ABC'',''EFG''], ''date'':i,''col1'': [10,100]}) df2 = pd.DataFrame({''code'': [''ABC'',''EFG''], ''date'':i,''col2'': [10,200]}) #merge on columns (default join is inner) pd.merge(df, df2, on =[''code'',''date''])

Este resultado es:

code col1 date col2 0 ABC 10 2014-06-01 10 1 EFG 100 2014-06-02 200

¿Qué pasa cuando ejecuta este código?