BUG: Column name is missing after concat if the key contain only one column of string data
I'm going to develop a simple application to compare two dataframe with given keys (multiple index columns).
I need to generate 3 dataframe as below,
- final_1 : contain all rows in df1, plus empty row with keys in df2 only
- final_2 : contain all rows in df2, plus empty row with keys in df1 only
- compare_result: contain information of merge ('both','left_only','right_only'), together with column comparison result

Please find the source beblow, there has some problem with particular keys combination.
I try to make a simple dataset and include in the source.

In the attached dataset, 
- It works find with the keys ['org_code','sub_key'], but with error if only ['org_code']
- It also work after I convert the 'org_code' to create a int column of 'dummy_code'.
- It also failed using ['user_name'] as keys, but no error for ['amount'].

It seems that there will have problem if the keys contain only one column of string data (e.g. 'org_code').

It was found that the index column name is missing for df_all in those fail cases.
Which cause the error like:    **KeyError: "['org_code'] not in index"**

df_all is generated using concat command, and it need to get a merged dataframe with columns of df1 and df2 under different group, and join by the key_columns.
```python
	df_all = pd.concat([df1.set_index(key_columns), df2.set_index(key_columns)], axis='columns', keys=['df1', 'df2'])
```

The workaround is to set the index name after df_all is generated if the key contain only one column.
i.e.
```Python
if len(key_columns) == 1:
    df_all.index.name = key_columns[0]
```
But it doesn't work if similar problem occurred in multiple columns situation.  So it'd be better if concat can keep the original column name.

May I know if this is the problem in concat command, or anything wrong in my case?  Thanks.



#### Code Sample, a copy-pastable example

```python
import tkinter as tk
from TableChecker import TableChecker
import pandas as pd

df1 = pd.DataFrame({
    'org_code': ['A222', 'A252', 'B100019'],
    'dummy_code': [222, 252, 100019],
    'sub_key': [1,2,3],
    'user_name': ['mary', 'john', 'david'],
    'amount': [222, 313,  100019],
})


df2= pd.DataFrame({
    'org_code': ['S6258', 'B100019'],
    'dummy_code': [6258, 100019],
    'sub_key': [4,3],
    'user_name': ['peter', 'david'],
    'amount': [2232, 126],
})

org_columns = list(df1.keys())
result_columns = list(df1.keys())
result_columns.append('_merge')

key_columns = ['org_code']


df_merge = pd.merge(df1[key_columns], df2[key_columns], how='outer', indicator=True)
df_merge.set_index(key_columns, inplace=True)
df_all = pd.concat([df1.set_index(key_columns), df2.set_index(key_columns)], axis='columns', keys=['df1', 'df2'])
df_diff = df_all['df1'] != df_all['df2']
result = pd.concat([df_merge, df_diff], axis=1)

compare_result = result.reset_index()[result_columns]
final_1 = df_all['df1'].reset_index()[org_columns]
final_2 = df_all['df2'].reset_index()[org_columns]

```

#### Problem description

By modifying the line key_columns =  ['org_code'] to change the key columns, it will have different result.
1) Error for single string data column:  e.g., ['org_code'] or  ['user_name']
2) No error for single numeric data column: e.g., ['dummy_code'], ['sub_key'] or ['amount']
3) No error for combined keys: e.g.,  ['org_code','sub_key'] ,['org_code','user_name'] or ['org_code','dummy_code','sub_key']

#### Expected Output

The column name of index column in df_all should not be empty, it should contain the original column name.


#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit           : 2a7d3326dee660824a8433ffd01065f8ac37f7d6
python           : 3.8.5.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
Version          : 10.0.19041
machine          : AMD64
processor        : Intel64 Family 6 Model 62 Stepping 4, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : None
LOCALE           : English_United States.950

pandas           : 1.1.2
numpy            : 1.18.5
pytz             : 2020.1
dateutil         : 2.8.1
pip              : 20.2.3
setuptools       : 49.6.0
Cython           : None
pytest           : 5.4.2
hypothesis       : None
sphinx           : None
blosc            : None
feather          : None
xlsxwriter       : None
lxml.etree       : 4.5.0
html5lib         : None
pymysql          : None
psycopg2         : None
jinja2           : 2.11.2
IPython          : 7.18.1
pandas_datareader: None
bs4              : None
bottleneck       : None
fsspec           : None
fastparquet      : None
gcsfs            : None
matplotlib       : 3.3.1
numexpr          : 2.7.1
odfpy            : None
openpyxl         : None
pandas_gbq       : None
pyarrow          : None
pytables         : None
pyxlsb           : None
s3fs             : None
scipy            : 1.4.1
sqlalchemy       : None
tables           : None
tabulate         : None
xarray           : None
xlrd             : 1.2.0
xlwt             : None
numba            : None

</details>
