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 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'])

This results is:

    code    col1    date    col2
0   ABC     10      2014-06-01  10
1   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')