我是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
答案 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