Why does Pandas inner join give ValueError: len(left_on) must equal the number of levels in the index of "right"? Why does Pandas inner join give ValueError: len(left_on) must equal the number of levels in the index of "right"? python python

Why does Pandas inner join give ValueError: len(left_on) must equal the number of levels in the index of "right"?


use merge if you are not joining on the index:

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

Follow up to question below:

Here is a reproducible example:

import pandas as pd# create some timestamps for date columni = pd.to_datetime(pd.date_range('20140601',periods=2))#create two dataframes to mergedf = 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'])

This results is:

    code    col1    date    col20   ABC     10      2014-06-01  101   EFG     100     2014-06-02  200

What happens when you run this code?


Here is another way of performing join. Unlike the answer verified, this is a more general answer applicable to all other types of join.

Inner Join

inner join can also be performed by explicitly mentioning it as follows in how:

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

The same methodology aplies for the other types of join:

OuterJoin

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

Left Join

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

Right Join

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