遇到ignore_index和concat()的问题

时间:2019-03-05 21:40:52

标签: python pandas

我是Python的新手。我有2个数据框,每个数据框只有一个列。我想将它们连接在一起,并根据它们在每个表中的位置保留值。

我的代码如下:

huh = pd.DataFrame(columns=['result'], data=['a','b','c','d'])
huh2 = pd.DataFrame(columns=['result2'], data=['aa','bb','cc','dd'])
huh2 = huh2.sort_values('result2', ascending=False)
tmp = pd.concat([huh,huh2], ignore_index=True, axis=1)
tmp

从文档看来,ignore_index标志和axis=1应该足以实现这一目标,但结果显然不同意。

当前输出:

    0   1
0   a   aa
1   b   bb
2   c   cc
3   d   dd

所需的输出:

    result  result2
0   a       dd
1   b       cc
2   c       bb
3   d       aa

1 个答案:

答案 0 :(得分:3)

如果水平连接DataFrame,则将忽略列名称。如果垂直连接,索引将被忽略。您只能忽略其中一个,而不能全部忽略。

在您的情况下,我建议将“ huh2”的索引设置为与“ huh”的索引相同。

pd.concat([huh, huh2.set_index(huh.index)], axis=1)

  result result2
0      a      dd
1      b      cc
2      c      bb
3      d      aa

如果您不处理自定义索引,则reset_index就足够了。

pd.concat([huh, huh2.reset_index(drop=True)], axis=1)

  result result2
0      a      dd
1      b      cc
2      c      bb
3      d      aa