我目前正在编写一个程序,并且有两个数据帧,按字符串索引,格式如下:
col5 col6
row1 81 58
row2 25 36
row3 67 70
row4 52 82
和
col1 col2 col3 col4 col5 col6
row1 65 24 47 35 81 58
row2 33 48 25 89 25 36
row3 65 34 67 34 67 70
row4 24 12 52 17 52 82
并希望将框架合并/连接/连接成如下所示的内容:
col1 col2 col3 col4 col5 col6
row1 65 24 47 35
row2 33 48 25 89
row3 65 34 67 34
row4 24 12 52 17
row1 81 58
row2 25 36
row3 67 70
row4 52 82
我已经尝试过各种方法,在阅读了关于合并/连接/加入的Pandas文档之后,我无法找到一种方法来执行这样的合并而没有重复的行索引,并且通常操作产生了一些东西看起来像这样:
{{1}}
然而,这不是我想要我的数据的格式。 什么是最有效的合并方式,以便将具有相同索引的值合并在一起?请注意,在某些情况下,数据框也可能具有不同的尺寸。
答案 0 :(得分:0)
选项1
您可以沿第一个轴使用pd.concat
:
df1
col1 col2 col3 col4
row1 65 24 47 35
row2 33 48 25 89
row3 65 34 67 34
row4 24 12 52 17
df2
col5 col6
row1 81 58
row2 25 36
row3 67 70
row4 52 82
df = pd.concat([df1, df2], 1)
df
col1 col2 col3 col4 col5 col6
row1 65 24 47 35 81 58
row2 33 48 25 89 25 36
row3 65 34 67 34 67 70
row4 24 12 52 17 52 82
如果您的索引存在问题,可以添加参数ignore_index=True
:
df = pd.concat([df1, df2], 1, ignore_index=True)
df
0 1 2 3 4 5
row1 65 24 47 35 81 58
row2 33 48 25 89 25 36
row3 65 34 67 34 67 70
row4 24 12 52 17 52 82
选项2
使用df.align
:
df3, df4 = df1.align(df2)
df = df3.fillna(0) + df4.fillna(0)
df
col1 col2 col3 col4 col5 col6
row1 65.0 24.0 47.0 35.0 81.0 58.0
row2 33.0 48.0 25.0 89.0 25.0 36.0
row3 65.0 34.0 67.0 34.0 67.0 70.0
row4 24.0 12.0 52.0 17.0 52.0 82.0