Python 连接两个数据帧并从索引创建多索引

Python 连接两个数据帧并从索引创建多索引,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我有两个数据帧df_1和df_2是: df_1 = pd.DataFrame({"A1":"1", "A2":"2", "A3":"3"}, index=[2411]) df_1.index.name = "i_1" df_2 = pd.DataFrame({"B1":"4", "B2":"5", "B3":"6"}, index=[123122]) df_2.index.name = "i_2" 我希望对其进行浓缩,因此最终的数据帧将如下所示: A1 A2

我有两个数据帧
df_1
df_2
是:

df_1 = pd.DataFrame({"A1":"1", "A2":"2", "A3":"3"}, index=[2411])
df_1.index.name = "i_1"
df_2 = pd.DataFrame({"B1":"4", "B2":"5", "B3":"6"}, index=[123122])
df_2.index.name = "i_2"
我希望对其进行浓缩,因此最终的数据帧将如下所示:

                A1  A2  A3  B1  B2  B3
i_1     i_2                     
2411    123122  1   2   3   4   5   6
基本上,这是沿轴1的浓缩,并讨论从索引设置一个多索引

我所做的最接近预期结果的是:

df_1 = df_1.reset_index()
df_2 = df_2.reset_index()
df_f = pd.concat([df_1,df_2], axis=1)
df_f = pd.DataFrame(df_f, index=pd.MultiIndex.from_arrays([float(df_1["i_1"]), float(df_2["i_2"])], names=["i_1","i_2"]))
del df_f["i_1"]
del df_f["i_2"]
但结果是:

A1  A2  A3  B1  B2  B3
i_1 i_2                     
2411.0  123122.0    NaN NaN NaN NaN NaN NaN
对于默认索引,我认为最简单的方法是
df
,因此将数据与最后一个对齐:

在您的解决方案中,问题是不同的索引,所以在
concat
之后获取2行,因为数据不能对齐(索引不同):


然后获取
NaN
s,因为在
DataFrame
构造函数中创建新的
Multiindex
但数据不会再次对齐-在原始
df\u f
中是数据大小
(2x6)
,并且要分配给
1,6
结构,索引也不同。

谢谢!请您解释一下,为什么我的解决方案包含
NaN
df_f = pd.concat([df_1.reset_index(),df_2.reset_index()], axis=1).set_index(['i_1','i_2'])
print (df_f)
            A1 A2 A3 B1 B2 B3
i_1  i_2                     
2411 123122  1  2  3  4  5  6
df_f = pd.concat([df_1,df_2], axis=1)
print (df_f)
         A1   A2   A3   B1   B2   B3
2411      1    2    3  NaN  NaN  NaN
123122  NaN  NaN  NaN    4    5    6