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?