gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:46:42 24 4
gpt4 key购买 nike

我有两个 DataFrame df_1df_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"

我想将它们连接起来,所以最终的 DataFrame 看起来像:

                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

最佳答案

我认为最简单的是 reset_index两个 df 作为默认索引,因此 concat对齐数据好和最后set_index :

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

在您的解决方案中,问题是不同的索引,因此在concat之后得到2行,因为数据无法对齐(不是相同的索引):

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

然后得到 NaNs,因为在 DataFrame 构造函数中创建新的 Multiindex 但数据未再次对齐 - 在原始 df_f 中> 是数据大小(2x6)并且要分配给1,6结构,索引也不同。

关于python - 连接两个数据帧并从索引创建多索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45192094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com